我已经尝试了大多数各种命令行工具,perl的CPAN模块以及一些其他的东西(Apache的pdf之物,不记得名字)。这显然是如何制作pdf的问题,如果他们只包含一些字符的子字体,并且没有将这些正确地映射到unicode代码点,pdf软件可以渲染文本,但是没有办法有意义提取它。
但是,有一个非自由命令行工具似乎能够这样做(不知何故)。
http://www.pdf-tools.com/pdf20/en/products/pdf-manipulation/pdf-extract/
只有在使用-s开关时它才有效,文档中有这样的说法:
4.2.15 -s Replace Symbolic Characters
Replace Symbolic Characters -s
Replace symbolic character from the Unicode custom range (0xF000 to 0xF0FF) with WinAnsi codes (0x00 to 0xFF).
Note: It is generally recommended to enable this option.
此工具不适合我的目的。它需要许可证密钥,甚至不会在网站上报价。我正在开展一个免费项目,这只是让它变得不可能。
有没有办法辨别他们用什么策略来检索那些隐藏在其他工具中的文字?我刚刚错过的免费工具中是否有类似的功能?
答案 0 :(得分:1)
很遗憾,您没有提供示例pdf。
考虑到使文本可提取的-s
开关的描述,看起来好像在问题的pdf 中有一个映射到Unicode 而不是常规代码通过简单地将0xf000 添加到实际代码点值,点将字形映射到私人使用范围,从U + F000开始。
因此,认为这种映射的文本提取器应该在U + F000..U + F0FF范围内提取unicode字符(为此,它们可能必须配置为使用足够的Unicode编码输出其结果,而不是例如ASCII或ANSI )。
你应该做的只是取这个输出并用U + 00 **替换U + F0 **字符。