在Android中生成Pdf的缩略图 [英] Generate Thumbnail of Pdf in Android
问题描述
我想从pdf文件生成图像(缩略图),就像 WhatsApp 一样,如下所示
I want to generate the image(thumbnail) from pdf file just like done by WhatsApp as shown below
我试过了
- PDFBox ( https://github.com/TomRoush/PdfBox-Android )
- Tika (编译'org.apache.tika:tika-parsers:1.11')
- AndroidPdfViewer ( https://github.com/barteksc/AndroidPdfViewer )
- PDFBox (https://github.com/TomRoush/PdfBox-Android)
- Tika (compile 'org.apache.tika:tika-parsers:1.11')
- AndroidPdfViewer (https://github.com/barteksc/AndroidPdfViewer)
仍然无法找到从pdf生成图像的方法。
and still unable to find a way to generate image from pdf.
PDFBox:
PDFBox:
有一个github问题可以解决这个问题( https://github.com/TomRoush/PdfBox-Android/issues/3 )但这仍然没有得到解决。
There is a github issue that deals with this problem (https://github.com/TomRoush/PdfBox-Android/issues/3) but this is still unresolved.
注意:我已成功使用 PDFBOX
AndroidPdfViewer:
AndroidPdfViewer:
Github问题( https://github.com/barteksc/AndroidPdfViewer/issues/49 )
Github issue (https://github.com/barteksc/AndroidPdfViewer/issues/49)
推荐答案
使用 PdfiumAndroid github.com/barteksc/AndroidPdfViewer/issues/49rel =noreferrer> barteksc 这里......
Use PdfiumAndroid as mentioned by barteksc here...
生成pdf thumb的示例代码
Sample Code for generating pdf thumb
//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中的库
Include library in build.gradle
compile 'com.github.barteksc:pdfium-android:1.4.0'
用于生成任何PDF页面的图像:
通过传递存储在存储中的任何 PDF uri 来调用方法 generateImageFromPdf(uri)。
Call the method generateImageFromPdf(uri) by passing any PDF uri that is stored in your storage.
该方法将在您存储的PDF文件夹中生成 PDF.png 。
The method will generate the PDF.png in PDF folder of your storage.
这篇关于在Android中生成Pdf的缩略图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!