我有一個Android應用程序,我想顯示一個PDF(沒有外部應用程序)。我認爲唯一的解決方案是將PDF頁面轉換爲圖像。有人有這個問題的經驗?你推薦我哪個庫?庫將PDF轉換爲圖像
我測試了下一個庫,但我有煩惱:
1)PdfRenderer library不能與現代的PDF工作
2)jPDFImages Android中無法正常工作(工作在Java桌面應用程序)
對不起for my English
我有一個Android應用程序,我想顯示一個PDF(沒有外部應用程序)。我認爲唯一的解決方案是將PDF頁面轉換爲圖像。有人有這個問題的經驗?你推薦我哪個庫?庫將PDF轉換爲圖像
我測試了下一個庫,但我有煩惱:
1)PdfRenderer library不能與現代的PDF工作
2)jPDFImages Android中無法正常工作(工作在Java桌面應用程序)
對不起for my English
我建議使用這個庫,android-pdfview
您可以使用MuPDF。下面是介紹如何構建MuPDF爲Android鏈接:http://mupdf.com/docs/how-to-build-mupdf-for-android
我擴大對accpeted答案,並提供完整的解決方案。
使用這個庫: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);
}
}
你應該通過使用AsyncTask
或IE在後臺做這個工作類似於相當多的方法需要計算或IO時間(我在註釋中標記了它們)。
你可以看看iText pdf,它是免費的,只要你不收費爲你的產品/服務 –
檢查此:http://stackoverflow.com/questions/2456344/display-pdf-within-app- on-android –
此外,請檢查此庫:http://code.google.com/p/apv/ –