2013-01-12 82 views
5

可能重复:
Example of code to implement a PDF readerPDF查看器API为Android

有,我可以用我的申请一个免费的PDF查看器?

我在寻找一个PDF查看器,可以搜索,突出显示文本,查看用户想要的页面,而不必更改PDF文件的内容。就像Adobe Reader一样,但是可以在应用程序中实现的Android。

您可以将我链接到相同的问题或源代码。

编辑:

我发现这个问题: “Pdf viewer api/library for android app sample code?”,但我认为他在寻找一个读者。这个问题“pdf viewer library for android”我读到要查看pdf,它应该是本地化的,解决方案是使用外部应用程序。

如果我使用外部应用程序,我希望外部应用程序接受PDF文件路径,查看页面和查找关键字,但我认为外部应用程序不会让我这样做。

+1

当您在互联网上搜索此项目时,您发现了什么? – CommonsWare

+0

你可能想要使用一个意图。 http://stackoverflow.com/questions/2883355/how-to-render-pdf-in-android/ – mikeslattery

+0

你可以在webview中查看pdf ..我们有一个选项。你试过了吗? – itsrajesh4uguys

回答

2

使用下面的代码使用PDFViewer.jar库读取PDF,它将解决您的问题。

First.java

public class First extends ListActivity { 

    String[] pdflist; 
    File[] imagelist; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //setContentView(R.layout.main); 

     File images = Environment.getExternalStorageDirectory(); 
     imagelist = images.listFiles(new FilenameFilter() { 
      public boolean accept(File dir, String name) { 
       return ((name.endsWith(".pdf"))); 
      } 
     }); 
     pdflist = new String[imagelist.length]; 
     for (int i = 0; i < imagelist.length; i++) { 
      pdflist[i] = imagelist[i].getName(); 
     } 
     this.setListAdapter(new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, pdflist)); 
    } 

    protected void onListItemClick(ListView l, View v, int position, long id) { 
     super.onListItemClick(l, v, position, id); 
     String path = imagelist[(int) id].getAbsolutePath(); 
     openPdfIntent(path); 
    } 

    private void openPdfIntent(String path) { 
     try { 
      final Intent intent = new Intent(First.this, Second.class); 
      intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME, path); 
      startActivity(intent); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Second.java

public class Second extends PdfViewerActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
    } 

    public int getPreviousPageImageResource() { 
     return R.drawable.left_arrow; 
    } 

    public int getNextPageImageResource() { 
     return R.drawable.right_arrow; 
    } 

    public int getZoomInImageResource() { 
     return R.drawable.zoom_in; 
    } 

    public int getZoomOutImageResource() { 
     return R.drawable.zoom_out; 
    } 

    public int getPdfPasswordLayoutResource() { 
     return R.layout.pdf_file_password; 
    } 

    public int getPdfPageNumberResource() { 
     return R.layout.dialog_pagenumber; 
    } 

    public int getPdfPasswordEditField() { 
     return R.id.etPassword; 
    } 

    public int getPdfPasswordOkButton() { 
     return R.id.btOK; 
    } 

    public int getPdfPasswordExitButton() { 
     return R.id.btExit; 
    } 

    public int getPdfPageNumberEditField() { 
     return R.id.pagenum_edit; 
    } 
} 

,并宣布这两项活动到您的清单文件。

+0

谢谢Dipak。你有没有PDFViewer.jar的链接?我找到了一些,但我不知道什么是正确的。 –

+0

我找到了链接,但“Goto Page”不起作用。其部队关闭。 –

0

如果你想要一个API,我不认为有任何免费的。我最近不得不为我的雇主创建一个应用程序,我们最终选择了3个付费图书馆,其中最便宜的是每个应用程序1K美元左右。如果您只是想在外部应用程序中启动它,您可以下载一个免费的文件并在该文件上启动视图意图。

+0

我认为外部的PDF查看器应用程序选择自己的PDF文件(浏览SDcard文件)。我希望我的应用程序将文件路径/页面发送到查看/关键字到我将使用的PDF查看器,但我认为外部应用程序不会让我这样做? –

+0

它应该在意向中发送它的路径。 –