清理 pdftotext 字体问题

清理 pdftotext 字体问题

我正在pdftotext制作 PDF 文档的 ASCII 版本(使用 LaTeX 制作),因为合作者更喜欢 MS Word 中的简单文档。

我看到的纯文本版本看起来不错,但仔细检查后发现,f 字符似乎经常根据后面的字符而错误转换。例如,fi 和 fl 似乎经常变成一个特殊字符,我将尝试在此处粘贴:fi 和 fl。

清理 pdftotext 输出的最佳方法是什么?我认为sed可能是正确的工具,但我不确定如何检测这些特殊字符。

答案1

默认情况下,pdftotext输出 unicode (UTF-8) 数据。如果您的终端或文本编辑器不支持 UTF-8,那么连字符(例如“fi”和“fl”(在 unicode 中可以表示为单个字符)将会出现奇怪的效果,正如您所注意到的。

简单的解决方法是pdftotext输出 ASCII 而不是 unicode:

pdftotext -enc ASCII7 input.pdf output.txt

这应该会产生干净的 ASCII 输出,无需您事后手动清理。

答案2

假设您使用某种基于 Unix 的系统,您可以在 pdftotext 的输出上运行此命令:

sed -i -e 's/ffi/ffi/g' -e 's/fi/fi/g' -e 's/ff/ff/g' -e 's/fl/fl/g' -e 's/ffl/ffl/g' output.txt

这应该会将连字符替换为它们分解成的单个字母。(请参阅我上面的评论,了解连字符与此有何关系。)

我在通过 LaTeX 生成的 PDF 生成的文本文件上测试了这一点pdftotext。它运行良好。但如果 LaTeX 使用带有附加连字符的非标准编码或字体,则可能需要做更多工作。

您可能需要确保终端中使用的字体具有 f 系列连字符。DejaVu Sans Mono 是一个不错的选择。

相关内容