すべての答えを調べて試した後、すべてのPDFファイルでうまくいきませんでした。カスタム フォントの PDF ファイルにレンダリングの問題がありました。次に、libraryを使用してみました。すべての PDF ページから画像を取得するための NickUncheck の回答からインスピレーションを得ました。
コードは次のとおりです。
アプリの build.gradle ファイルに次の依存関係を追加します。
implementation 'com.github.barteksc:android-pdf-viewer:3.2.0-beta.1'
PDF ページを画像に変換するコード:
public static List<Bitmap> renderToBitmap(Context context, String filePath) {
List<Bitmap> images = new ArrayList<>();
PdfiumCore pdfiumCore = new PdfiumCore(context);
try {
File f = new File(pdfPath);
ParcelFileDescriptor fd = ParcelFileDescriptor.open(f, ParcelFileDescriptor.MODE_READ_ONLY);
PdfDocument pdfDocument = pdfiumCore.newDocument(fd);
final int pageCount = pdfiumCore.getPageCount(pdfDocument);
for (int i = 0; i < pageCount; i++) {
pdfiumCore.openPage(pdfDocument, i);
int width = pdfiumCore.getPageWidthPoint(pdfDocument, i);
int height = pdfiumCore.getPageHeightPoint(pdfDocument, i);
Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
pdfiumCore.renderPageBitmap(pdfDocument, bmp, i, 0, 0, width, height);
images.add(bmp);
}
pdfiumCore.closeDocument(pdfDocument);
} catch(Exception e) {
//todo with exception
}
return images;
}
これまでのところ、私が試したすべての PDF ファイルで機能しています。