5
我已經完成從PDF中提取文本,但現在我想提取圖像。第一個問題是圖像在每頁文本之間。我想知道的是如何按順序提取圖像,即使文件是每頁2列,以及如何確定圖像放置在文本中的位置。如何在Android上使用iText從PDF文件中提取圖像和文本
這是我嘗試過的一些代碼。
圖像提取:
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應用程序中,而不是將它轉換爲文件。如果我不可能,那麼當用戶使用它時,我會堅持刪除圖像。
我的目的是要EXTRACT(NOT VIEW)來自PDF文件的文本和圖像,並按順序顯示在android應用程序中。
正如前面對其他問題的迴應所述,人們在PDF中查看元素(文本或圖像)的順序並不一定以PDF的形式在手邊呈現。因此,要匹配通用PDF中的解析圖像和解析文本,必須提取兩者的位置,並使用啓發式方法在文本中錨定圖像。即使你只在制定時想要按順序獲取圖像,也必須提取/瞭解結構(多列?),並根據該結構分析圖像位置。而如果在兩欄文檔中有一個圖像在中心? ;) – mkl