如何从 PDF 书签中删除缩放信息

如何从 PDF 书签中删除缩放信息

我有一个带有书签(又名索引和文档大纲)的 PDF 文件,它似乎指定了链接后文档显示的缩放比例。我知道这一点是因为当我在 Evince 中查看文件并单击书签时,Evince 会自动更改缩放级别。

尽管 ISO 32000-1:2008(第 12 节)中对此进行了记录,但我不喜欢这种行为。我希望我的 PDF 查看器在使用书签后以相同的缩放级别显示文档。

dconf 中一个相对较新的密钥allow-links-change-zoom应该可以解决这个问题。然而,即使将密钥设置为 后false,Evince 仍继续表现出之前的行为。 (也许我可能需要重新启动计算机;但我无法检查这一点,因为我现在无法访问较新版本的 Evince。)

这就是为什么我一直试图从 PDF 文件的书签中删除缩放信息。

/XYZ规范中出现的、/Fit等关键字GoTo在文件中不会出现。也许书签以某种方式进行了编码。所以手动或通过擦除数据sed似乎不起作用。

我该如何完成任务?

答案1

您可能需要使用解压缩文件pdftk才能真正找到目标关键字。

如果您仍然有 v1.7 PDF 标准的副本,您还可以查看第 8.2 节以获取有关语法的更多详细信息。关于指定目的地的部分可能会有所帮助。

这是我用来从 PDF 书签中删除缩放系数的小脚本:

#!/bin/bash

# decrypt the file
pdftk "$1" output decrypted.pdf && \
pdftk decrypted.pdf output uncompressed.pdf uncompress && \
# remove zoom factors in bookmarks
sed 's#/Fit#/XYZ#g' uncompressed.pdf > uncompressed_output.pdf && \
# compress the output
pdftk uncompressed_output.pdf output output.pdf compress && \
mv "$1" "$1.original" && \
mv output.pdf "$1" && \
rm decrypted.pdf uncompressed.pdf uncompressed_output.pdf

将其保存到文件removezoom.sh并使其可执行。然后你可以将其称为

~$ ./removezoom.sh yourFile.pdf

编辑:啊,抱歉,我指的是 Adob​​e 格式化的文档中的第 8.2 节,名为“PDF 参考,第六版”。格式与原始ISO文档不同,左右国会图书馆声称

相关内容