【发布时间】:2018-08-06 22:02:04
【问题描述】:
我在我的 java 应用程序中使用带有 pdfbox-2.0.9 的 PDFDomTree 将 pdf 文件转换为 html 文件。以下代码我用来转换pdf。
try {
PDDocument document = PDDocument.load(new File("some path"));
PDFDomTree parser = new PDFDomTree(PDFDomTreeConfig.createDefaultConfig());
Writer output = new PrintWriter(new File("some output path"), "utf-8");
parser.writeText(document, output);
output.close();
document.close();
} catch (IOException | ParserConfigurationException e) {
throw e;
}
现在我的问题是,当我尝试分析输出 html 时,我意识到转换器无法检测两个单词之间的空格,因此我得到了一些单词连接。
如果需要,可以从here访问相应的pdf文件。
谁能帮我解决这个问题?
【问题讨论】:
-
我对这个库不是很熟悉,但必须将空白错误追溯到原点?例如,如果在您创建 document 变量时出现问题,那么会有其他人遇到您的问题,您可以查找它。如果 PDDocument 文档 变量中不存在空白问题,只需用一组随机字符替换空白文本,并在调用 parser.writeText 时将其显式设置回空白(文档,输出);
-
PDFDomTree 不是来自 PDFBox,这是来自第三方项目。 PDFBox ExtractText 实用程序工作正常。 (也可以转成HTML)
-
vsbehere - 我的假设是基于另一个假设:您使用了 pdfbox 的文本提取类。正如@Tilman 指出的那样,情况并非如此。我在您的问题标题和问题文本中都更清楚地说明了这一事实。
-
vsbehere - “这些实际上是空白,而不是空白。” - 你是对的,而且“spetto al mese 先例,per effetto”(包括空格)实际上是由 PDF 中的一条指令绘制。在这种情况下删除空格显示了文本提取器中令人惊讶的缺陷。正如@TilmanHausherr 已经指出的那样,PDFBox 的文本提取在这里可以正常工作。
-
我只是看看实际提取的数据。看起来 pdf2dom 实际上将整行视为一个单词,因为空格太小了。啊,我刚刚在其
processTextPosition覆盖中找到了if (!text.getUnicode().trim().isEmpty())。这将删除任何空格字符,因为字符一个接一个。因此,以后不再考虑这些空间。
标签: java pdf pdf-to-html