2017-11-15 7 views
2

私はPdfViewrを使用しています。PdfViewrプロンプト保存ページ

最後のページでpdfを開きたいが、これは機能しません。私は何度も試みましたが、うまくいきませんでした。

私はこのコードを、私は、PDFの最後のページを保存することができますどのように

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.newpdf); 
     pdfView = (PDFView) findViewById(R.id.pdfView); 
     displayFromAsset(SAMPLE_FILE); 
    } 

    private void displayFromAsset(String assetFileName) { 
     pdfFileName = assetFileName; 

     pdfView.fromAsset(SAMPLE_FILE) 
       .defaultPage(pageNumber) 
       .enableSwipe(true) 
       .swipeHorizontal(false) 
       .onPageChange(this) 
       .enableAnnotationRendering(true) 
       .onLoad(this) 
       .scrollHandle(new DefaultScrollHandle(this)) 
       .spacing(10) 
       .load(); 
    } 


    @Override 
    public void onPageChanged(int page, int pageCount) { 
     pageNumber = page; 
     setTitle(String.format("%s %s/%s", pdfFileName, page + 1, pageCount)); 
    } 


    @Override 
    public void loadComplete(int nbPages) { 
     PdfDocument.Meta meta = pdfView.getDocumentMeta(); 
     printBookmarksTree(pdfView.getTableOfContents(), "-"); 

    } 

    public void printBookmarksTree(List<PdfDocument.Bookmark> tree, String sep) { 
     for (PdfDocument.Bookmark b : tree) { 

      Log.e(TAG, String.format("%s %s, p %d", sep, b.getTitle(), b.getPageIdx())); 

      if (b.hasChildren()) { 
       printBookmarksTree(b.getChildren(), sep + "-"); 
      } 
     } 
    } 
} 

を使用し、私は私のアプリのためにこれを実装する必要があります。どんな助け?

ありがとうございます。

+0

ここで、uはpageNumberを保存しましたか? SharedPrefs/DBに保存します。もしuがpageNumberを10として渡すなら、 –

+0

こんにちは。このコードで助けてくれてありがとう。 – ahmmed

+1

あなたはpagenumberをグローバルにストアしなければなりません。プリファレンスまたはdbまたは任意のグローバル変数を使用して、pagenumberを格納できます。 –

答えて

2

使用の好みに動作していませんグローバルにアクセスでき、クラスインスタンスでは変更されません。

public static final String MY_PREFS_NAME = "MyPrefsFile"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.newpdf); 
     pdfView = (PDFView) findViewById(R.id.pdfView); 
     displayFromAsset(SAMPLE_FILE); 
    } 

    private void displayFromAsset(String assetFileName) { 

    if(!getFileName().equals(assetFileName)){ 
      setPageNumber(0); 
      setFileName(assetFileName); 
    } 
     pdfView.fromAsset(assetFileName) 
       .defaultPage(getPageNumber()) 
       .enableSwipe(true) 
       .swipeHorizontal(false) 
       .onPageChange(this) 
       .enableAnnotationRendering(true) 
       .onLoad(this) 
       .scrollHandle(new DefaultScrollHandle(this)) 
       .spacing(10) 
       .load(); 
    } 


    @Override 
    public void onPageChanged(int page, int pageCount) { 

     setPageNumber(page) 
     setTitle(String.format("%s %s/%s", pdfFileName, (getPageNumber() + 1), pageCount)); 
    } 


    @Override 
    public void loadComplete(int nbPages) { 
     PdfDocument.Meta meta = pdfView.getDocumentMeta(); 
     printBookmarksTree(pdfView.getTableOfContents(), "-"); 

    } 

    public void setPageNumber(int pageNumber) { 
      SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit(); 
      editor.putInt("page_number", pageNumber); 
      editor.apply(); 
     } 

     public int getPageNumber() { 
      SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 
      return prefs.getInt("page_number", 0); 
     } 
    public void setFileName(String fileName) { 
      SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit(); 
      editor.putString("file_name", fileName); 
      editor.apply(); 
     } 

     public String getFileName() { 
      SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 
      return prefs.getString("file_name", ""); 
     } 
    public void printBookmarksTree(List<PdfDocument.Bookmark> tree, String sep) { 
     for (PdfDocument.Bookmark b : tree) { 

      Log.e(TAG, String.format("%s %s, p %d", sep, b.getTitle(), b.getPageIdx())); 

      if (b.hasChildren()) { 
       printBookmarksTree(b.getChildren(), sep + "-"); 
      } 
     } 
    } 
+0

よろしくお願い致します。 – ahmmed

+0

ようこそ。.. –

+0

私は40のpdfを持っていますpdfはすべて同じページで開きますこの番号を修正する方法 ありがとう – ahmmed

0

たびにあなたの最後のページ番号を保存して、あなたのようなPDFファイルを初期化する際に渡す:このコードで

pdfView.fromAsset(SAMPLE_FILE) 

      .defaultPage(pageNumber) // enter your last page number 
      .enableSwipe(true) 
      .swipeHorizontal(false) 
      .onPageChange(this) 
      .enableAnnotationRendering(true) 
      .onLoad(this) 
      .scrollHandle(new DefaultScrollHandle(this)) 
      .spacing(10) 
      .load(); 
0

itryが、それができるように、ストアページ番号に

private void displayFromAsset(String assetFileName) { 
    pdfFileName = assetFileName; 

    pdfView.fromAsset(SAMPLE_FILE) 
      .defaultPage(pageNumber) 
      .enableSwipe(true) 
      .swipeHorizontal(false) 
      .onPageChange(this) 
      .enableAnnotationRendering(true) 
      .onLoad(this) 
      .scrollHandle(new DefaultScrollHandle(this)) 
      .spacing(10) 
      .load(); 
} 


@Override 
public void onPageChanged(int page, int pageCount) { 

    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putInt(String.valueOf(name),page); 
    editor.commit(); 
} 
+0

あなたの質問を編集し、更新した変更を投稿することができます。 –

関連する問題