【发布时间】:2016-03-14 13:35:23
【问题描述】:
我尝试使用 PDFBox 2.0.0 解析 PDF 的内容流。
这是处理它的代码的一部分:
InputStream is;
try {
is = this.input.getDocumentCatalog().getPages().get(page).getContents();
} catch (IOException e) {
e.printStackTrace();
return;
}
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
do {
try {
line = br.readLine();
} catch (IOException e) {
e.printStackTrace();
try {
br.close();
} catch (IOException e1) {
e1.printStackTrace();
}
return;
}
if(line != null){
System.out.println(line);
}
}while(line != null);
问题是当我到达“(someString)Tj”行时:这里是我的代码返回的输出示例:
BT
/F2 7.0866 Tf
0 Tr
7.0866 TL
0.001 Tc
65 Tz
0 0 Td
(
ET
如您所见,“(someString) Tj”行变成了“(” ...
在eclipse的调试模式下,当程序到达这一行时,“line”变量包含以下值:
"(
(以 " 开头,'(' 后面没有任何内容,这与任何其他以第二个 " 结尾的字符串不同)。
如果我扩展 String 值,我会得到以下 char 数组:
[0] (
[1]
[2] %
[3]
[4] $
[5]
[6]
[7]
[8]
[9] )
[10]T
[11]j
一些空案例返回一个“void”值(在 eclipse 中引发“生成的值(void)与声明的类型(char)不兼容”错误),其他包含一些无法理解的字符。我认为问题来自错误的字符编码,但我找不到解决方案。
我已经尝试过一些类似的东西
line = new String(br.readLine().getBytes("UTF-8"), "UTF-8");
差不多,但由于我不确定问题是什么,所以很难解决。
有人可以向我解释一下问题是什么以及最终如何解决它吗?
感谢您的帮助。
【问题讨论】:
标签: java string pdf encoding pdfbox