我遇到了 PNG 到 PDF 转换的问题。
实际上我有很大的PNG文件,不是大小而是内容。
在 PDF 转换中,它会创建一个大的 PDF 文件。我对其质量没有任何问题,但每当我尝试在 PDF 查看器中打开此 PDF 时,它都会以“适合页面”模式打开。
所以,我在初始 View 中看不到创建的 PDF,但我需要将其放大到 100%。
我的问题是:我可以创建一个始终以 100% 缩放打开的 PDF 吗?
最佳答案
您可以在 Ghostscript 的帮助下实现您想要的。
Ghostscript 支持通过 -c "...[PostScript code here]..."
将 PostScript 片段插入到其命令行参数中。 .
PostScript 有一个特殊的运算符,称为 pdfmark
.大多数 PostScript 解释器不理解此运算符,但在生成 PDF 时,Acrobat Distiller 和(对于它的大多数参数)Ghostscript 也可以理解。
所以你可以尝试插入
-c "[ /PageMode /UseNone /Page 1 /View [/XYZ null null 1] \
/PageLayout /SinglePage /DOCVIEW pdfmark"
进入 PDF->PDF 转换 Ghostscript 命令行。
请注意有关此代码段的各种基本信息:
[
,命令行片段的内容似乎“不平衡”。和 ]
运算符/关键字。但事实并非如此!初始的 [ 由最终的 pdfmark
平衡。关键词。 (别问——我没有定义这个语法……)[ ... ]
括号分隔代表页面的数组/View
您想要的设置。 关于这个片段的一些具体事情:
/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 运算符的更多信息,请在谷歌中搜索“pdfmark 引用文件类型:pdf”。您应该可以在 Adobe 网站和其他地方找到它:
为了让 ImageMagick 根据需要创建 PDF,您可以破解定义代理设置的文件。有关此主题的更多帮助,请参见此处的示例:
关于image - 我可以创建一个始终以 100% 缩放级别打开的 PDF 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28189523/