我是pdfbox的新手。我使用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);
}
}
}
}
}
}
版本使用PDFTextStripperByArea从pdf中获取整个文本。我可以分别得到每个字符串吗?
例如, 在下文中,
提名:姓名和地址 托运人:托运人姓名
我需要提名作为单独的字符串,“名称和地址”作为单独的字符串。相反,我分别得到每个角色。我尝试过不同的Pdfs。对于大多数pdfs,我能够获得确切的字符串,但对于少数pdfs,我没有。
我使用以下代码来获取单独的字符串。
<item name="windowActionBar">false</item>
我得到以下输出:
string2 ====&gt;&gt; Nom
string2 ====&gt;&gt; i
字符串2 ====&GT;&GT; NA
字符串2 ====&GT;&GT;吨
字符串2 ====&GT; I标记
字符串2 ====&GT;&gt;在
string1 ===
字符串2 ====&GT;&GT;(
字符串2 ====&GT;&GT;吨
字符串2 ====&GT;&GT;○
string1 ===
字符串2 ====&GT;&GT;罗阿丝
字符串2 ====&GT;&GT;二
字符串2 ====&GT;&GT;纳克
string1 ===
字符串2 ====&GT;&GT;发
字符串2 ====&GT;&以及c
字符串2 ====&GT; I标记
字符串2 ====&GT;→1
字符串2 ====&GT; I标记
字符串2 ====&GT;&GT;吨
字符串2 ====&GT;&GT; Y
字符串2 ====&GT;&GT)