我正在处理PDF文件,希望能在我的PDF文件中实现页面查看器。我的想法是将PDF文件转换为BMP图像,然后使用ViewPager进行查看。但是我卡在了将PDF转换为位图上。有什么建议吗?
我正在处理PDF文件,希望能在我的PDF文件中实现页面查看器。我的想法是将PDF文件转换为BMP图像,然后使用ViewPager进行查看。但是我卡在了将PDF转换为位图上。有什么建议吗?
在你的 Gradle 文件中包含依赖项
compile 'com.github.barteksc:android-pdf-viewer:2.8.1'
private Bitmap generateImageFromPdf(String assetFileName, int pageNumber, int width, int height) {
PdfiumCore pdfiumCore = new PdfiumCore(mActivity);
try {
File f = FileUtils.fileFromAsset(mActivity, assetFileName);
ParcelFileDescriptor fd = ParcelFileDescriptor.open(f, ParcelFileDescriptor.MODE_READ_ONLY);
PdfDocument pdfDocument = pdfiumCore.newDocument(fd);
pdfiumCore.openPage(pdfDocument, pageNumber);
//int width = pdfiumCore.getPageWidthPoint(pdfDocument, pageNumber);
//int height = pdfiumCore.getPageHeightPoint(pdfDocument, pageNumber);
Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
pdfiumCore.renderPageBitmap(pdfDocument, bmp, pageNumber, 0, 0, width, height);
//saveImage(bmp, filena);
pdfiumCore.closeDocument(pdfDocument);
return bmp;
} catch(Exception e) {
//todo with exception
}
return null;
}
这是一种将PDF渲染为图像的方法 它需要20到25秒来将PDF文件渲染为图像 它适用于Android 10、Android 9和所有更低版本
private void generateImageFromPdf() {
try {
PDDocument doc=PDDocument.load(new File(fileurl));
PDFRenderer pdfRenderer = new PDFRenderer(doc);
Bitmap bffim = pdfRenderer.renderImageWithDPI(0, 100, Bitmap.Config.RGB_565);
String fileName = "image-" + 0 + ".png";
img.setImageBitmap(bffim);
} catch (IOException e) {
e.printStackTrace();
}
}