Trong ứng dụng của tôi, tôi sẽ nhận được luồng byte và chuyển đổi nó thành tệp pdf trong bộ nhớ điện thoại. Làm cách nào để hiển thị nó cho một pdf? Và hiển thị nó trên một hoạt động?Cách hiển thị PDF trong Android
Trả lời
Một số điện thoại (như Nexus One) đi kèm với phiên bản Quickoffice được cài đặt sẵn để có thể dễ dàng như gửi Mục đích thích hợp khi bạn đã lưu tệp vào thẻ SD.
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();
}
}
}
});
}
}
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);
}
}
tôi nghĩ rằng điều này chỉ hoạt động với liên kết trình xem google, bởi vì nó chỉ phục vụ hình ảnh. Nếu chúng tôi sử dụng liên kết đến pdf trực tiếp, nó sẽ không hoạt động. Đúng không ? –
Điều này dường như không hoạt động đối với các tệp cục bộ, chỉ các tệp từ xa. –
Điều gì xảy ra nếu liên kết sẽ thay đổi? –
Đối với các tệp pdf cục bộ, bạn có thể hiển thị chúng thông qua thư viện của bên thứ ba. ví dụ: sử dụng MuPDF library, các loại tệp được hỗ trợ của nó bao gồm PDF, PNG và JPEG.
Một thiếu sót của MuPDF là nó sử dụng thư viện gốc để hoàn thành mục tiêu, do đó sẽ không dễ dàng chuyển ứng dụng này trên nền tảng BlackBerry sau này.
Android Lollipop (api 21) giới thiệu một API mới: PdfRenderer
API này cho phép bạn tạo ra một Bitmap từ một trang trong một tài liệu PDF.
Ngay:
có được một mô tả tập tin seekable từ tài liệu pdf của bạn:
ParcelFileDescriptor fd = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY)
tạo PdfRenderer
PdfRenderer renderer = new PdfRenderer(fd);
chuẩn bị Bitmap
Bitmap bitmap = Bitmap.createBitmap(WIDTH, HEIGHT, Bitmap.Config.ARGB_4444);
được PdfRenderer.Page để render
PdfRenderer.Page page = renderer.openPage(pageIndex);
làm trang trên bitmap chuẩn bị
page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
bây giờ bạn có thể làm những gì bạn muốn với bitmap.
- lưu ý rằng 2 args rỗng cho phép bạn cắt một số phần trong trang và thực hiện chuyển đổi (sử dụng một Matrix) của clip
- có một chế độ rendering: RENDER_MODE_FOR_PRINT. Nếu bạn cần chế độ này, có một số nguyên tắc để sử dụng đúng cách: đây là the details.
Có cách nào để đạt được điều này mà không lưu tệp trên điện thoại không? Tôi nhận được PDF như bytestream và tôi cần hiển thị nó cho người dùng mà không cần lưu nó trên điện thoại. –
ràng buộc là chuyển một bộ mô tả tệp có thể tìm kiếm tới hàm tạo; và fd từ luồng ổ cắm không thể tìm kiếm được. Bạn có thể cố gắng lưu trữ tất cả các byte từ luồng trong bộ đệm và nhận fd có thể tìm kiếm được từ đó. – ben75
Thư viện này là đơn giản và hoạt động tốt: Android Pdf Viewer https://github.com/barteksc/AndroidPdfViewer
Cũ Trả lời ...
Tôi nghĩ rằng Joan Zapata cho chúng ta những giải pháp tốt hơn và đơn giản:
https://github.com/JoanZapata/android-pdfview
tôi đảm bảo với bạn rằng nó hoạt động!
Alecs: Bạn đã sử dụng gì cho pdfName trong 'pdfView.fromAsset (pdfName)'? Tôi đã thử bằng cách sử dụng đường dẫn tuyệt đối, nhưng tập tin không được tìm thấy (và tôi chắc chắn nó là có). Ví dụ: /data/data/package.name/files/images/filename.pdf –
Kính gửi @ h-bomb, bạn phải sử dụng phương thức ** fromasset ** khi pdf của bạn nằm trong bộ mã hóa nội dung của dự án của bạn. Để tải pdf từ thiết bị, bạn có thể sử dụng phương thức ** fromFile **. – Alecs
Cảm ơn rất nhiều. Tôi quyết định sử dụng [FileProvider] của Android (https://developer.android.com/reference/android/support/v4/content/FileProvider.html) và cho phép ứng dụng bên ngoài mở tệp PDF. Ngạc nhiên thay, tài liệu và mã mẫu trong tài liệu dev của FileProvider là tuyệt vời. –
Để mở một pdf từ một mảng byte, bạn có thể sử dụng RadaeePDF
, bạn có thể làm như sau vào hoạt động của bạn:
private PDFReader m_vPDF = null;
private Document doc = new Document();
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Global.Init(this);
m_vPDF = new PDFReader(this);
doc.Close();
int ret = m_doc.OpenMem(data, password);
switch(ret)
{
case -1://need input password
finish();
break;
case -2://unknown encryption
finish();
break;
case -3://damaged or invalid format
finish();
break;
case -10://access denied or invalid file path
finish();
break;
case 0://succeeded, and continue
break;
default://unknown error
finish();
break;
}
m_vPDF.open(doc);
setContentView(m_vPDF);
}
- 1. fancybox hiển thị pdf
- 2. Android - Truy cập tệp từ nội dung \ PDF hiển thị
- 3. Cách hiển thị bản pdf bằng C#
- 4. Hiển thị tệp PDF trong Silverlight
- 5. Hiển thị PDF trên Blackberry?
- 6. Làm cách nào để hiển thị PDF trong Adobe Flex?
- 7. Python + Selenium + PhantomJS hiển thị lên PDF
- 8. Cách hiển thị tệp PDF ở chế độ xem Django
- 9. Hiển thị tệp PDF với python3
- 10. hiển thị hình ảnh lớn trong Android
- 11. Tọa độ lô trên PDF được hiển thị trong iFrame
- 12. Hiển thị PDF trong Fancybox hoặc lightbox khác
- 13. Cách đọc pdf trong android
- 14. Cách mở PDF trong Android
- 15. Chữ cái Kirin không hiển thị bằng PDF được tạo bằng iText trong Android
- 16. Hiển thị Adobe pdf bên trong một div
- 17. Android, Cách hiển thị% đệm từ onBufferingUpdate
- 18. Hiện PDF trong Android
- 19. Pisa (XHTML -> PDF) ở Django sẽ không hiển thị hình ảnh trong PDF
- 20. Cách hiển thị thanh tải khi hiển thị với Webview.loadUrl trong android?
- 21. Hiển thị ảnh YUV trong Android
- 22. Làm cách nào để hiển thị trang PDF theo trang bằng cách vuốt ngang trong iphone?
- 23. Cách hiển thị luồng PDF trong trình duyệt bằng cách sử dụng javascript
- 24. Android: Hiển thị hình ảnh trong Webview
- 25. Hiển thị edittext obliquely trong android
- 26. Cách hiển thị trạng thái "Đang tải" trong Android?
- 27. cách tối ưu hóa hiển thị trong webview android
- 28. Cách hiển thị menu tùy chọn trong android 4.2
- 29. Cách hiển thị hình ảnh từ internet trong android?
- 30. Cách hiển thị biểu đồ hình tròn trong android
này đã được trả lời ở đây: http: //stackoverflow.com/a/16294833/2027232 –