在我的Android应用程序中显示Word/PDF文档
我已经考虑了所有可能的选择。我需要在android应用程序中显示pdf和word文档。出于某些安全原因,我不允许在第三方应用程序中打开文档。但不幸的是,内置android没有内置组件来显示word文档&默认内置组件用于显示API 21及以上版本的pdf支持(我的应用程序从API 19开始)。有谁能解释一下这个问题,因为我找不到任何解决办法。请注意,我正在寻找开源解决方案。在webview中打开pdf/Doc在我的Android应用程序中显示Word/PDF文档,android,pdf,ms-word,Android,Pdf,Ms Word,我已经考虑了所有可能的选择。我需要在android应用程序中显示pdf和word文档。出于某些安全原因,我不允许在第三方应用程序中打开文档。但不幸的是,内置android没有内置组件来显示word文档&默认内置组件用于显示API 21及以上版本的pdf支持(我的应用程序从API 19开始)。有谁能解释一下这个问题,因为我找不到任何解决办法。请注意,我正在寻找开源解决方案。在webview中打开pdf/Doc String pdf = "http://www.pc-hardware.hu
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);
stringpdf=”http://www.pc-hardware.hu/PDF/konfig.pdf";
字符串doc=”“;
webView=(webView)findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setPluginsEnabled(true);
webView.getSettings().setAllowFileAccess(true);
webView.loadUrl(doc);
您可以使用第三方库在视图中显示它
像
main活动
@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 + "-");
}
}
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pdfView=(pdfView)findViewById(R.id.pdfView);
displayFromAsset(示例文件);
}
私有void displayFromAsset(字符串assetFileName){
pdfFileName=assetFileName;
pdfView.fromAsset(示例文件)
.defaultPage(页码)
.enableSwipe(真)
.swipeHorizontal(错误)
.onPageChange(此)
.enableAnnotationRendering(真)
.onLoad(此)
.scrollHandle(新的DefaultScrollHandle(此))
.load();
}
@凌驾
公共无效页已更改(整页,整页计数){
页码=页码;
setTitle(String.format(“%s%s/%s”,pdfFileName,第+1页,pageCount));
}
@凌驾
公共无效加载完成(整版){
PdfDocument.Meta=pdfView.getDocumentMeta();
printBookmarksTree(pdfView.getTableOfContents(),“-”;
}
public void printBookmarksTree(列表树,字符串sep){
for(PdfDocument.Bookmark b:树){
Log.e(TAG,String.format(“%s%s,p%d”,sep,b.getTitle(),b.getPageIdx());
if(b.haschilds()){
printBookmarksTree(b.getChildren(),sep+“-”;
}
}
}
这可能是重复的。您确定可以在webView
中打开一个扩展名为.doc/.docx的文件吗?是的,如果您不想使用任何第三方视图,它可以正常工作,但您没有选择工具,听起来很棒。!感谢您的回复,但对于一些问题,我收到了一个错误,即拒绝加载无效的url。您能通过您的pdf url吗?我猜他已经说过他不想使用任何第三方库。不想在第三方应用程序中打开,但可以使用第三方库在他的应用程序中打开感谢Kashif的回复。我已经查过了。问题是它只支持pdf&我也有word文档。因此,我想到了一个共同的解决方案,在那里我可以同时使用它
@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 + "-");
}
}
}