如何在Android中将PDF页面转换为图像?
我需要做的就是取一个(本地保存的)并将其中的一个或所有页面转换为JPG或PNG等图像格式。PDF-document
我已经尝试了很多PDF渲染/查看解决方案,如APV PDF Viewer,APDFViewer,droidreader,android-pdf,MuPdf和许多其他解决方案,但到目前为止还无法弄清楚如何将pdf页面转换为图像?
编辑:我也宁愿有一个PDF到图像转换器,而不是一个PDF渲染器,我需要编辑以将PDF转换为图像。
我需要做的就是取一个(本地保存的)并将其中的一个或所有页面转换为JPG或PNG等图像格式。PDF-document
我已经尝试了很多PDF渲染/查看解决方案,如APV PDF Viewer,APDFViewer,droidreader,android-pdf,MuPdf和许多其他解决方案,但到目前为止还无法弄清楚如何将pdf页面转换为图像?
编辑:我也宁愿有一个PDF到图像转换器,而不是一个PDF渲染器,我需要编辑以将PDF转换为图像。
要支持 API 8 及更高版本,请执行以下操作:
使用此库:android-pdfview和以下代码,您可以可靠地将PDF页面转换为图像(JPG,PNG):
DecodeServiceBase decodeService = new DecodeServiceBase(new PdfContext());
decodeService.setContentResolver(mContext.getContentResolver());
// a bit long running
decodeService.open(Uri.fromFile(pdf));
int pageCount = decodeService.getPageCount();
for (int i = 0; i < pageCount; i++) {
PdfPage page = decodeService.getPage(i);
RectF rectF = new RectF(0, 0, 1, 1);
// do a fit center to 1920x1080
double scaleBy = Math.min(AndroidUtils.PHOTO_WIDTH_PIXELS / (double) page.getWidth(), //
AndroidUtils.PHOTO_HEIGHT_PIXELS / (double) page.getHeight());
int with = (int) (page.getWidth() * scaleBy);
int height = (int) (page.getHeight() * scaleBy);
// you can change these values as you to zoom in/out
// and even distort (scale without maintaining the aspect ratio)
// the resulting images
// Long running
Bitmap bitmap = page.renderBitmap(with, height, rectF);
try {
File outputFile = new File(mOutputDir, System.currentTimeMillis() + FileUtils.DOT_JPEG);
FileOutputStream outputStream = new FileOutputStream(outputFile);
// a bit long running
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
outputStream.close();
} catch (IOException e) {
LogWrapper.fatalError(e);
}
}
您应该在后台完成这项工作,即通过使用或类似的东西,因为相当多的方法需要计算或IO时间(我已经在注释中标记了它们)。AsyncTask
您需要查看此开源项目以满足相同的要求,这也可以帮助您做更多的事情。
项目 : PdfRenderer
有一个名为 PDFPage 的 Java 类.java包中。该类有一个获取页面图像的方法。pdfview
我也在我的测试项目中实现了同样的事情,Java代码在这里为你服务。我创建了一个方法,该方法接受页面no和缩放级别,并将该页面返回为.showPage
Bitmap
希望这可以帮助你。你只需要获得该项目或JAR,阅读有据可查的JAVADOC,然后尝试实现与我相同的方法。
慢慢来,快乐编码:)