您可以借助 Ghostscript 实现您想要的。
Ghostscript 支持通过-c "...[PostScript code here]..." 将 PostScript sn-ps 插入其命令行参数中。
PostScript 有一个称为pdfmark 的特殊运算符。大多数 PostScript 解释器不理解此运算符,但在生成 PDF 时,Acrobat Distiller 和(对于它的大部分参数)Ghostscript 也可以理解。
所以你可以尝试插入
-c "[ /PageMode /UseNone /Page 1 /View [/XYZ null null 1] \
/PageLayout /SinglePage /DOCVIEW pdfmark"
转成PDF->PDF转换Ghostscript命令行。
请注意关于这个sn-p的各种基本事项:
关于[ 和] 运算符/关键字,命令行 sn-p 的内容似乎“不平衡”。但事实并非如此!最初的 [ 由最后的 pdfmark 关键字平衡。 (别问——我没有定义这个语法……)
“内部”[ ... ] 方括号分隔一个 数组,表示您想要的页面 /View 设置。
并非所有 PDF 查看器都尊重嵌入在 PDF 文件中的视图设置(Acrobat 软件可以!)。
大多数 PDF 查看器允许用户覆盖嵌入在 PDF 文件中的视图设置(Acrobat 软件也可以这样做)。也就是说,您可以告诉您的查看器永远不要尊重它打开的 PDF 文件中的任何设置,但是 f.e.始终以“适合宽度”打开它。
关于这个 sn-p 的一些具体事情:
- 页面模式
/UseNone 表示:文档显示时没有书签或缩略图。它可以替换为
-
/UseOutlines(也显示书签,而不仅仅是页面)
-
/UseThumbs(显示页面的缩略图,而不仅仅是页面
-
/FullScreen(全屏打开文档)
- 构造为
[/XYZ <left> <top> <zoom>]的视图模式数组表示:缩放系数为1(=100%),到页面原点的左侧距离是特殊的'null'值,这意味着保持之前的用户-设定值;与页面原点的顶部距离也是“空”。该数组可以替换为
-
/Fit(使页面适应当前窗口大小)
-
/FitB(使可见页面内容适应当前窗口大小)
-
/FitH <top>' (to adapt the page width to the current window width);` 表示从页面原点到窗口上边缘所需的距离。
- ...还有其他几个我现在不记得了。
因此,要更改现有 PDF 文件的设置,您可以执行以下操作:
gs \
-o out.pdf \
-sDEVICE=pdfwrite \
-c "[ /PageMode /UseNone /Page 1 /View [ /XYZ null null 1 ] " \
-c " /PageLayout /SinglePage /DOCVIEW pdfmark" \
-f in.pdf
要检查 Ghostscript 命令是否有效,请在能够处理二进制文件的文本编辑器中打开 PDF。搜索 /View 或 /PageMode 关键字并检查它们是否存在,作为值插入到 PDF 根对象中。
如果有效,请检查您的 PDF 查看器是否支持这些设置。如果它不支持它们,请查看查看器首选项设置中是否存在覆盖设置。
我对我的 PDF 样本进行了快速测试。这是 PDF 根对象的字典现在的样子,在 pdf-parser.py 的帮助下检查:
pdf-parser-beta.py -s Catalog a.pdf
obj 1 0
Type: /Catalog
Referencing: 3 0 R, 9 0 R
<<
/Type /Catalog
/Pages 3 0 R
/PageMode /UseNone
/Page 1
/View [/XYZ null null 1]
/PageLayout /SinglePage
/Metadata 9 0 R
>>
要了解有关 pdfmark 运算符的更多信息,请在 Google 上搜索 'pdfmark reference filetype:pdf'。您应该可以在 Adobe 网站和其他地方找到它:
为了让 ImageMagick 根据需要创建 PDF,您可以破解定义您的 delegate 设置的文件。有关此主题的更多帮助,请参见此处的示例: