【发布时间】:2020-12-20 16:42:36
【问题描述】:
我的总体目标是使一些 PDF 文件符合 PDF/A 标准以用于存档目的。它们不符合一项要求,即某些字形映射映射到 0,这是它们不应该的。
我通常的策略是使用一个名为 "Pdfedit" 的旧软件,它可以解码 PDF 文件,然后所有字节流都将是人类可读的,编辑包含字形映射的 PDF 的相关部分,然后打开使用 Adobe Acrobat 自动重新编码的文件。
现在我有一些 PDF 会导致“Pdfedit”在打开时崩溃。我尝试使用PDF-Parser,但它的输出无法被 Adobe Acrobat 重新编码。
此外,过去解码的相关部分看起来像这样:
/CMapType 2 def
1 begincodespacerange
<00><04>
endcodespacerange
5 beginbfchar
<00><0000>
<01><0000>
<02><263A>
<03><0000>
<04><0000>
endbfchar
endcmap
但现在我使用以下命令python3 pdf-parser.py -f -n /path/to/file.pdf > dump.txt,在 dump.txt 中相关部分如下所示:
b'/CMapType 2 def\n1 begincodespacerange\n<00><04>\nendcodespacerange\n5 beginbfchar\n<00><0000>\n<01><0000>\n<02><263A>\n<03><0000>\n<04><0000>\nendbfchar\nendcmap\nCMapName currentdict/CMap defineresource pop end end'
所以它是一个字节串,并且任何换行符都按字面意思呈现为\n。 Adobe Acrobat 无法将包含此内容的 txt 文件解释为 PDF。
我现在也意识到%%EOF等很多元素都是用''分隔的。
真正的问题是如何从 pdf-parser.py 获得 Acrobat 可读的输出,因为 shell 命令 > 不起作用,并且 shell 中的 stdout 也有问题。
我会尝试一些事情,但在这方面真的需要一些帮助!
【问题讨论】:
-
By "But now, it looks like this"你的意思是现在使用其他工具还是现在在这些新的pdf中?
-
新工具输出一个包含这部分的txt文件。 Adobe Acrobat 无法理解和重新编码整个 txt 文件。我这样说是因为使用旧的解码软件,在手动更改后,我可以用 Adobe Acrobat 打开相关的 txt 文件来创建工作 pdf 文件。现在编辑我的帖子。
-
所以看起来新工具的功能并不是为了重新编码 PDF 以供进一步使用,而只是为了调试目的。