从 PDF 中提取准确的 table 数据
Extracting exact table data from PDF
我正在尝试从我之前创建的 pdf 文件中提取 table 的每一行。
我遇到的问题是,我认为会保存为 'null' 的空单元格被忽略了,甚至没有被读取为 space 个字符。
我通过这种方法从我的 PDF 中提取内容:
public final ArrayList<String> extractLines(final File pdf) throws IOException {
try (PDDocument doc = PDDocument.load(pdf)) {
PDFTextStripper strip = new PDFTextStripper();
String txt = strip.getText(doc);
String[] arr = txt.split("\n");
final ArrayList<String> lines = new ArrayList<>(Arrays.asList(arr));
return lines;
}
}
甚至可以用白色spaces提取数据吗?
如果是这样,用PDFBox?或者其他方法?
编辑:
无法使 traprange 工作,简单测试:
File e = new File("C:/Users/Test/Downloads/a.pdf");
List<Table> t = new PDFTableExtractor().setSource(e).extract();
System.out.println(t.get(0).toString());
只给我:
会不会和我的table形式有关?
我的table:
解决方案需要自定义算法来完成任务。请检查 this solution 以获取自定义 PDFTableStripper。
Tho which could be found at traprage 实施了另一个出色的解决方案。它可以提取特定单元格的空数据。
我想出了自己的解决方案。
因为我有一个 2D ArrayList,所以我每个人都有一个列表,其中包含一行 table。
现在我保存非空单元格的位置(任何时候每行只有一个不为空)。
我将其保存在 PDF 的元数据字段中并加载该字段以取回位置。
我正在尝试从我之前创建的 pdf 文件中提取 table 的每一行。
我遇到的问题是,我认为会保存为 'null' 的空单元格被忽略了,甚至没有被读取为 space 个字符。
我通过这种方法从我的 PDF 中提取内容:
public final ArrayList<String> extractLines(final File pdf) throws IOException {
try (PDDocument doc = PDDocument.load(pdf)) {
PDFTextStripper strip = new PDFTextStripper();
String txt = strip.getText(doc);
String[] arr = txt.split("\n");
final ArrayList<String> lines = new ArrayList<>(Arrays.asList(arr));
return lines;
}
}
甚至可以用白色spaces提取数据吗?
如果是这样,用PDFBox?或者其他方法?
编辑:
无法使 traprange 工作,简单测试:
File e = new File("C:/Users/Test/Downloads/a.pdf");
List<Table> t = new PDFTableExtractor().setSource(e).extract();
System.out.println(t.get(0).toString());
只给我:
会不会和我的table形式有关?
我的table:
解决方案需要自定义算法来完成任务。请检查 this solution 以获取自定义 PDFTableStripper。
Tho which could be found at traprage 实施了另一个出色的解决方案。它可以提取特定单元格的空数据。
我想出了自己的解决方案。
因为我有一个 2D ArrayList,所以我每个人都有一个列表,其中包含一行 table。
现在我保存非空单元格的位置(任何时候每行只有一个不为空)。
我将其保存在 PDF 的元数据字段中并加载该字段以取回位置。