getTokens()给出了垃圾数据和单字符PDFBox-1.8.9版本
我是pdfbox的新手。我正在使用getTokens()给出了垃圾数据和单字符PDFBox-1.8.9版本,pdf,pdfbox,Pdf,Pdfbox,我是pdfbox的新手。我正在使用pdfbox-app-2.0.0-RC1version使用PDFTextStripperByArea从pdf中获取整个文本。我是否可以分别获取每个字符串 比如说,, 在下文中 提名:姓名及地址 托运人:托运人姓名 我需要提名作为单独的字符串和“姓名和地址”作为单独的字符串。相反,我将分别获取每个角色。我试过使用不同的PDF。对于大多数PDF,我能够得到精确的字符串,但对于少数PDF,我不能 我使用以下代码来获取单独的字符串 for (PDPage page :
pdfbox-app-2.0.0-RC1
version使用PDFTextStripperByArea从pdf中获取整个文本。我是否可以分别获取每个字符串
比如说,,
在下文中
提名:姓名及地址
托运人:托运人姓名
我需要提名作为单独的字符串和“姓名和地址”作为单独的字符串。相反,我将分别获取每个角色。我试过使用不同的PDF。对于大多数PDF,我能够得到精确的字符串,但对于少数PDF,我不能
我使用以下代码来获取单独的字符串
for (PDPage page : doc.getPages()) {
PDFStreamParser parser = new PDFStreamParser(page);
parser.parse();
List<Object> tokens = parser.getTokens();
for (int j = 0; j < tokens.size(); j++) {
Object next = tokens.get(j);
if (next instanceof Operator) {
Operator op = (Operator) next;
if (op.getName().equals("Tj")) {
COSString previous = (COSString) tokens.get(j - 1);
String string = previous.getString();
System.out.println("string1===" + string);
if (string.contains("Plant")) {
int size = al.size();
al.add(string);
stop = false;
continue;
}
if (!string.contains("_") && !stop) {
if (string.contains("Nomination")) {
stop = true;
} else {
al.add(string);
}
}
} else if (op.getName().equals("TJ")) {
COSArray previous = (COSArray) tokens.get(j - 1);
for (int k = 0; k < previous.size(); k++) {
Object arrElement = previous.getObject(k);
if (arrElement instanceof COSString) {
COSString cosString = (COSString)arrElement;
String string = cosString.getString();
System.out.println("string2====>>"+string);
al.add(string);
}
}
}
}
}
}
for(PDPage:doc.getPages()){
PDFStreamParser=新的PDFStreamParser(第页);
parser.parse();
List tokens=parser.getTokens();
对于(int j=0;j>”+字符串);
al.添加(字符串);
}
}
}
}
}
}
我得到以下输出:
字符串2==>>名称
string2==>>i
string2==>>na
字符串2==>>t
string2==>>i
string2===>>打开
字符串1==
string2==>>(
字符串2==>>T
string2==>>o
字符串1==
string2==>>Loa
string2==>>di
string2==>>ng
字符串1==
string2==>>Fa
字符串2==>>c
string2==>>i
字符串2==>>l
string2==>>i
字符串2==>>t
string2==>>y
字符串2===>>)
我将分别获取每个字符-不,在您发布的输出中有一些多字母组。也就是说,你没有得到整个字符串而是这些片段的原因是,在pdf中,不是你的整个字符串一次被画出来,而是作为这些片段。如果你想要整个字符串,你必须把这些片段放在一起,这就是文本剥离器为你做的。目前的版本是RC2。(虽然这不会改变你所遇到的“问题”,但事情与mkl所描述的完全一样)。谢谢你的回复。因此,pdfbox会根据pdf的编写方式对其进行解析。??使用getTokens()--string1===>>在另一个pdf中获取垃圾数据!“#$$string1===>>string1===>%&'string1====>>()string1====>>string1=====>>string1=====>>”$*string1======>>*!$*string1===>>string1===>>“$*string1====>>*!+string1==>>string1==>>,string1===>>,)string1====>>string1====>>string1===>$#/0*1”字符串===字符串===字符串===>%23.4 string1===>$1==>string1==>string1=>string1=>>,string1=========>,String4.string1=>;方法返回正确的文本。解析器函数有问题吗??