我想在pdf中提取表格的内容,如下所示:
我使用iText java PDF libray编写了这个java程序,它可以逐行读取PDF文件的内容,但我不知道如何获取表的内容
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.parser.PdfTextExtractor;
public class PDFReader {
public static void main(String[] args) {
// TODO, add your application code
System.out.println("Lecteur PDF");
System.out.println (ReadPDF("D:/test.pdf"));
}
private static String ReadPDF(String pdf_url)
{
StringBuilder str=new StringBuilder();
try
{
PdfReader reader = new PdfReader(pdf_url);
int n = reader.getNumberOfPages();
for(int i=1;i<n;i++)
{
String str2=PdfTextExtractor.getTextFromPage(reader, i);
str.append(str2);
System.out.println(str);
}
}catch(Exception err)
{
err.printStackTrace();
}
return String.format("%s", str);
}
}
这就是我得到的:
但这不是我想要的,我想逐行逐列提取表的内容,例如,保存java数组中的每一行
第一个数组将包含:“N°”,“DATE OBSERVATIONS”,“TEXTE”
第二个阵列将包含:“029/14”,“Le 1er sept 2014 remplace AVURNAV ...”,“SETE A compter du lundi 7 juillet2014débuterontlestrav ...”
第三个阵列将包含:“037/14”,“Le 15 octobre 2014 remplace AVURNAV ...”,“SETE Du 15 septembre 2014 au 15 juillet 2015,travaux ....”
等等
由于
答案 0 :(得分:2)
如果PDF库不支持提取表格,则可能必须识别公共字段开头/结尾字符序列以将数据拆分为数组。
例如,第一个字段为nnn/nn
,第二个字段以nnnn/nn
结束,第三个字段在下一个第一个字段开始的位置结束。
这是一个棘手的问题 - 我之前不得不使用基于坐标的方法来处理这个问题,但是你的pdf库可能不支持提取字母的位置以及实际文本。