【发布时间】:2018-04-09 05:37:37
【问题描述】:
我正在将数据从 PDF 转换为 excel。 PDF 包含表格。我使用 Itext- pdf 读取数据并在 apache poi 的帮助下将其转换为 excel。但所有内容都转换为文本,甚至表格行和列。我喜欢像在 PDF 中一样将表格写为行和列,所以请帮助我阅读 PDF 中的表格以写入 Excel。
这是我的代码:
PdfReader reader;
try {
reader = new PdfReader("D:/JDEV_WORK/MANOJ/ItemPriceReport.pdf");
PdfReaderContentParser parser = new PdfReaderContentParser(reader);
TextExtractionStrategy strategy;
String line = null;
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
strategy = parser.processContent(i,new SimpleTextExtractionStrategy());
line = strategy.getResultantText();
System.out.println("line --- "+line);
}
//conversion starts here....
HSSFRow myRow = null;
HSSFCell myCell = null;
CreationHelper helper = myWorkBook.getCreationHelper();
List<String> lines = IOUtils.readLines(new StringReader(line));
for (int i = 0; i < lines.size(); i++) {
String str[] = lines.get(i).split(",");
myRow = mySheet.createRow((short) i);
for (int j = 0; j < str.length; j++) {
myRow.createCell(j).setCellValue(helper.createRichTextString(str[j]));
}
}
FileOutputStream fileOut;
try {
fileOut = new FileOutputStream("D:/JDEV_WORK/MANOJ/ItemPriceExcel.xls");
myWorkBook.write(fileOut);
fileOut.close();
} catch (FileNotFoundException e) {
System.out.println("FILE NOT FOUND");
}
reader.close();
} catch (IOException e) {
}
【问题讨论】:
-
我真的不明白这两个赞成票。您甚至没有告诉我们您的 PDF 是否为标记的 PDF。如果没有,那么 iText 的开源版本将无济于事。您需要一个封闭源代码的 iText 插件,例如 pdf2Data,并且如果您的文档不包含任何 real,您需要教系统如何检测表格i> 表。不是因为你看到有一张桌子,而是有一张桌子;如果您的 PDF 没有被标记,那么当 机器 查看 PDF 时没有表格。
-
我对 PDF 了解不多,无论它是否是 Tagged PDF。它只是开源版本。您的意思是在封闭源 itext 中添加诸如 pdf2Data 将有助于检测 pdf 中的表格。那么请问如何获得封闭源代码。如果您有任何示例来源,请发送链接。
-
您可以在 Adobe Reader 中打开 PDF 并查看文档属性以查看 PDF 是否为标记 PDF。至于pdf2Data,我已经提供了一个链接,但你可能忽略了它:itextpdf.com/itext7/pdf2Data
标签: java itext apache-poi