我遇到了PNG到PDF转换的问题。
实际上我的大PNG文件不是大小而是内容。
在PDF转换中,它会创建一个大的PDF文件。我的质量没有任何问题,但每当我尝试在PDF查看器中打开此PDF时,它都会打开" Fit to Page"模式。
因此,我无法在初始视图中看到创建的PDF,但我需要将其缩放到100%。
我的问题是:我可以创建一个始终以缩放100%打开的PDF吗?
答案 0 :(得分:5)
你可以在Ghostscript的帮助下实现你想要的目标。
Ghostscript支持通过-c "...[PostScript code here]..."
将PostScript代码段插入其命令行参数。
PostScript有一个名为pdfmark
的特殊运算符。大多数PostScript解释器不理解此运算符,但Acrobat Distiller和(对于其大多数参数)在生成PDF时也由Ghostscript理解。
所以你可以尝试插入
-c "[ /PageMode /UseNone /Page 1 /View [/XYZ null null 1] \
/PageLayout /SinglePage /DOCVIEW pdfmark"
转换为PDF-> PDF转换Ghostscript命令行。
请注意有关此代码段的各种基本事项:
命令行代码段的内容似乎是“不平衡的”'关于[
和]
运营商/关键字。但事实并非如此!最初的[由最终的pdfmark
关键字进行平衡。 (不要问 - 我没有定义这种语法......)
'内心' [ ... ]
括号分隔表示所需页面/View
设置的数组。
并非所有PDF查看者都尊重PDF文件中嵌入的视图设置(Acrobat软件会这样做!)。
大多数PDF查看器允许用户覆盖PDF文件中嵌入的视图设置(Acrobat软件也会这样做)。也就是说,你可以告诉你的观众从不尊重它打开的PDF文件中的任何设置,但是f.e.始终用"适合宽度"。
关于此代码段的一些具体事项:
/UseNone
表示:文档显示时没有书签或缩略图。它可以被替换为
/UseOutlines
(也显示书签,而不仅仅是页面)/UseThumbs
(显示页面的缩略图,而不仅仅是页面/FullScreen
(以全屏模式打开文档)[/XYZ <left> <top> <zoom>]
的视图模式的数组意味着:缩放因子为1(= 100%),距页面原点的左边距离是特殊的&#39; null&#39; value,表示保留以前的用户设置值;距离页面原点的最远距离也是“空白”。这个数组可以替换为
/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运算符,请参阅&lt; pdfmark参考文件类型:pdf&#39; 。您应该可以在Adobe网站和其他地方找到它:
为了让ImageMagick根据需要创建PDF,您可以破解定义委托设置的文件。有关此主题的更多帮助,请参见此处:
答案 1 :(得分:0)
PDF规范以这种方式支持此功能:创建转到第一页的GoTo操作并将缩放级别设置为100%,然后将操作设置为文档打开操作。
在现实生活中如何实现它取决于您用于创建PDF文件的工具。我不知道ImageMagick是否可以创建这样的动作。