在Android中生成PDF的缩略图

我想从pdf文件生成图像(缩略图),就像WhatsApp所做的那样,如下所示 WhatsApp的

我努力了

  1. PDFBox ( https://github.com/TomRoush/PdfBox-Android )
  2. Tika (编译'org.apache.tika:tika-parsers:1.11')
  3. AndroidPdfViewer ( https://github.com/barteksc/AndroidPdfViewer )

并仍然无法find从pdf生成图像的方法。


PDFBox的:

有一个github问题处理这个问题( https://github.com/TomRoush/PdfBox-Android/issues/3 ),但这仍然是没有解决。

注意:我成功地能够使用PDFBOX从PDF中提取图像


AndroidPdfViewer:

Github问题( https://github.com/barteksc/AndroidPdfViewer/issues/49 )

Solutions Collecting From Web of "在Android中生成PDF的缩略图"

在这里使用barteksc提到的PdfiumAndroid …

用于生成PDF拇指的示例代码

//PdfiumAndroid (https://github.com/barteksc/PdfiumAndroid) //https://github.com/barteksc/AndroidPdfViewer/issues/49 void generateImageFromPdf(Uri pdfUri) { int pageNumber = 0; PdfiumCore pdfiumCore = new PdfiumCore(this); try { //http://www.programcreek.com/java-api-examples/index.php?api=android.os.ParcelFileDescriptor ParcelFileDescriptor fd = getContentResolver().openFileDescriptor(pdfUri, "r"); 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); pdfiumCore.closeDocument(pdfDocument); // important! } catch(Exception e) { //todo with exception } } public final static String FOLDER = Environment.getExternalStorageDirectory() + "/PDF"; private void saveImage(Bitmap bmp) { FileOutputStream out = null; try { File folder = new File(FOLDER); if(!folder.exists()) folder.mkdirs(); File file = new File(folder, "PDF.png"); out = new FileOutputStream(file); bmp.compress(Bitmap.CompressFormat.PNG, 100, out); // bmp is your Bitmap instance } catch (Exception e) { //todo with exception } finally { try { if (out != null) out.close(); } catch (Exception e) { //todo with exception } } } 

更新:

将库包含在build.gradle中

 compile 'com.github.barteksc:pdfium-android:1.4.0' 

用于生成任何PDF页面的图像:

通过传递存储在存储器中的任何PDF URI ,调用generateImageFromPdf(uri)方法。

该方法将在您的存储的PDF文件夹中生成PDF.png