在我的Android应用程序中显示Word / PDF文档

时间:2018-06-05 05:24:48

标签: android pdf ms-word

我已经看了所有可能的选项。我要求显示pdf&我的android应用程序里面的word文档。出于某些安全原因,我不允许在第三方应用程序中打开该文档。但不幸的是,内置的android没有内置的组件来显示word文档&默认的内置组件,用于显示来自API 21和API的pdf支持。上面(我的应用程序从API 19开始)。任何人都可以对这个问题有所了解,因为我无法找到解决方案。请注意,我正在寻找开源解决方案。

2 个答案:

答案 0 :(得分:2)

在webview中打开pdf / Doc

     String pdf = "http://www.pc-hardware.hu/PDF/konfig.pdf";
   String doc="<iframe src='http://docs.google.com/viewer?url=http://www.iasted.org/conferences/formatting/presentations-tips.ppt&embedded=true' 
              width='100%' height='100%' 
              style='border: none;'></iframe>";
    webView = (WebView) findViewById(R.id.webView1);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setPluginsEnabled(true);
    webView.getSettings().setAllowFileAccess(true);
    webView.loadUrl(doc);

答案 1 :(得分:0)

您可以使用第三方库在视图中显示它 比如this

<RelativeLayout android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="#ffffff"
  xmlns:android="http://schemas.android.com/apk/res/android" >

<TextView
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:background="@color/colorPrimaryDark"
    android:text="View PDF"
    android:textColor="#ffffff"
    android:id="@+id/tv_header"
    android:textSize="18dp"
    android:gravity="center"></TextView>

<com.github.barteksc.pdfviewer.PDFView
    android:id="@+id/pdfView"
    android:layout_below="@+id/tv_header"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>


</RelativeLayout>

<强> MainActivity

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