parser.getTokens()给出垃圾数据和单字符PDFBox-1.8.9版本

时间:2015-12-09 06:00:16

标签: pdf pdfbox

我是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)

0 个答案:

没有答案