在我的应用程序中,我将收到一个字节流并将其转换为手机内存中的pdf文件.如何将其呈现为pdf?并在活动中展示它?
有些手机(如Nexus One)预装了Quickoffice版本,因此在将文件保存到SD卡后,可能就像发送相应的Intent一样简单.
public class OpenPdf extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button = (Button) findViewById(R.id.OpenPdfButton); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { File file = new File("/sdcard/example.pdf"); if (file.exists()) { Uri path = Uri.fromFile(file); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(path, "application/pdf"); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); try { startActivity(intent); } catch (ActivityNotFoundException e) { Toast.makeText(OpenPdf.this, "No Application Available to View PDF", Toast.LENGTH_SHORT).show(); } } } }); } }
在webview中打开pdf文件.
public class MyPdfViewActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); WebView mWebView=new WebView(MyPdfViewActivity.this); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.getSettings().setPluginsEnabled(true); mWebView.loadUrl("https://docs.google.com/gview?embedded=true&url="+LinkTo); setContentView(mWebView); } }
Android-Lollipop(api 21)引入了一个新的API:PdfRenderer
此API允许您从PDF文档中的页面创建位图.
不久:
从您的pdf文档中获取可搜索的文件描述符:
ParcelFileDescriptor fd = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY)
创建PdfRenderer
PdfRenderer renderer = new PdfRenderer(fd);
准备位图
Bitmap bitmap = Bitmap.createBitmap(WIDTH, HEIGHT, Bitmap.Config.ARGB_4444);
获取PdfRenderer.Page进行渲染
PdfRenderer.Page page = renderer.openPage(pageIndex);
在准备好的位图上渲染页面
page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
现在你可以用位图做你想做的事了.
请注意,2个空参数可能允许您剪切页面中的某些部分并执行剪辑的变换(使用矩阵)
还有另一种渲染模式:RENDER_MODE_FOR_PRINT.如果您需要此模式,可以正确使用它:这里是详细信息.
以下是有关如何使用此新API的完整示例
这个库很简单,效果很好: Android Pdf Viewer https://github.com/barteksc/AndroidPdfViewer
老回复......
我认为Joan Zapata为我们提供了更好,更简单的解决方案:
https://github.com/JoanZapata/android-pdfview
我保证你的确有效!
1:https://github.com/JoanZapata/android-pdfview