2013-10-29 52 views
3

我試圖在我的活動中顯示PDF書,但似乎無法找到合適的庫,它確實有幫助。 Iv嘗試PDFViewer.jar PdfViewer在Android活動中顯示PDF文件的應用程序

但它並不顯示所有的PDF文件,不夠好。嘗試使用qPDF qPDF,如果它是免費的或者甚至是負擔得起的,那麼它會是完美的,但它太貴了。我也檢查過其他圖書館,但似乎沒有完美的工作。

請幫我建議一個圖書館或任何其他格式,我可以閱讀書籍和相應的圖書館,可以幫助我。我可以使用Epub嗎?由於

+0

我覺得這個問題已經在這裏很好的解釋了: http://stackoverflow.com/questions/2456344/display-pdf-within-app-on-android?rq=1 –

回答

0

從這裏下載(Display PDF file inside my android application

源代碼添加這種依賴性

編譯 'com.github.barteksc:Android的PDF查看器:2.0.3'

MainActivity.java

package pdfviewer.pdfviewer; 

import android.app.Activity; 
import android.database.Cursor; 
import android.net.Uri; 
import android.provider.OpenableColumns; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.ImageView; 
import android.widget.RelativeLayout; 

import com.github.barteksc.pdfviewer.PDFView; 
import com.github.barteksc.pdfviewer.listener.OnLoadCompleteListener; 
import com.github.barteksc.pdfviewer.listener.OnPageChangeListener; 
import com.github.barteksc.pdfviewer.scroll.DefaultScrollHandle; 
import com.shockwave.pdfium.PdfDocument; 

import java.util.List; 

public class MainActivity extends Activity implements OnPageChangeListener,OnLoadCompleteListener{ 
    private static final String TAG = MainActivity.class.getSimpleName(); 
    public static final String SAMPLE_FILE = "android_tutorial.pdf"; 
    PDFView pdfView; 
    Integer pageNumber = 0; 
    String pdfFileName; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     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)) 
       .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 + "-"); 
      } 
     } 
    } 

} 
相關問題