PDFからのテキストの抽出はすでに行っていますが、画像を抽出したいと思います。最初の問題は、画像が1ページあたりのテキストの間にあることです。私が知りたいのは、ファイルがページごとに2列であっても、画像を順番に抽出する方法と、画像がテキストのどこに配置されているかを判断する方法です。
これが私が試したいくつかのコードです。
画像抽出:
ExtractImages.java:
public static final String RESULT = "results/part4/chapter15/Img%s.%s";
public void extractImages(String filename)
throws IOException, DocumentException {
PdfReader reader = new PdfReader(filename);
PdfReaderContentParser parser = new PdfReaderContentParser(reader);
MyImageRenderListener listener = new MyImageRenderListener(RESULT);
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
parser.processContent(i, listener);
}
}
MyImageRenderListener:
public MyImageRenderListener(String path) {
this.path = path;
}
public void renderImage(ImageRenderInfo renderInfo) {
try {
String filename;
FileOutputStream os;
PdfImageObject image = renderInfo.getImage();
if (image == null) return;
filename = String.format(path, renderInfo.getRef().getNumber(), image.getFileType());
os = new FileOutputStream(filename);
os.write(image.getImageAsBytes());
os.flush();
os.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
コードはPDFの内容を処理し、画像をチェックしてから、それらの画像を画像ファイル(.png、.jpgなど)にレンダリングします。
私がここで得た問題は、画像を順番に抽出しないことです。ページの最初に最初に表示され、最後にどの画像が表示されるかがわかるように、画像を順番に表示します。それ、どうやったら出来るの?それでは、ファイルにレンダリングせずに画像を抽出することは可能ですか?画像の私の目標は、ファイルに変換せずに、Androidアプリケーションで画像として表示することです。それが不可能な場合は、ユーザーが画像を使い終わったら、画像を削除することに固執します。
私の目的は、PDFファイルからテキストと画像を抽出(表示ではない)し、Androidアプリケーションで順番に表示することです。