在我的应用程序中,我将收到一个字节流并将其转换为手机内存中的pdf文件.如何将其呈现为pdf?并在活动中展示它?
Tim*_*ger 115
有些手机(如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();
}
}
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
Sha*_*wal 16
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);
}
}
Run Code Online (Sandbox Code Playgroud)
Android-Lollipop(api 21)引入了一个新的API:PdfRenderer
此API允许您从PDF文档中的页面创建位图.
不久:
从您的pdf文档中获取可搜索的文件描述符:
ParcelFileDescriptor fd = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY)
Run Code Online (Sandbox Code Playgroud)创建PdfRenderer
PdfRenderer renderer = new PdfRenderer(fd);
Run Code Online (Sandbox Code Playgroud)准备位图
Bitmap bitmap = Bitmap.createBitmap(WIDTH, HEIGHT, Bitmap.Config.ARGB_4444);
Run Code Online (Sandbox Code Playgroud)获取PdfRenderer.Page进行渲染
PdfRenderer.Page page = renderer.openPage(pageIndex);
Run Code Online (Sandbox Code Playgroud)在准备好的位图上渲染页面
page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
Run Code Online (Sandbox Code Playgroud)现在你可以用位图做你想做的事了.
这个库很简单,效果很好: Android Pdf Viewer https://github.com/barteksc/AndroidPdfViewer
老回复......
我认为Joan Zapata为我们提供了更好,更简单的解决方案:
https://github.com/JoanZapata/android-pdfview
我保证你的确有效!
| 归档时间: |
|
| 查看次数: |
81139 次 |
| 最近记录: |