我可以创建一个始终以缩放级别100%打开的PDF吗?

时间:2015-01-28 10:11:37

标签: image pdf imagemagick image-manipulation

我遇到了PNG到PDF转换的问题。

实际上我的大PNG文件不是大小而是内容。

在PDF转换中,它会创建一个大的PDF文件。我的质量没有任何问题,但每当我尝试在PDF查看器中打开此PDF时,它都会打开" Fit to Page"模式。

因此,我无法在初始视图中看到创建的PDF,但我需要将其缩放到100%。

我的问题是:我可以创建一个始终以缩放100%打开的PDF吗?

2 个答案:

答案 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命令行。

请注意有关此代码段的各种基本事项:

  1. 命令行代码段的内容似乎是“不平衡的”'关于[]运营商/关键字。但事实并非如此!最初的[由最终的pdfmark关键字进行平衡。 (不要问 - 我没有定义这种语法......)

  2. '内心' [ ... ]括号分隔表示所需页面/View设置的数组

  3. 并非所有PDF查看者都尊重PDF文件中嵌入的视图设置(Acrobat软件会这样做!)。

  4. 大多数PDF查看器允许用户覆盖PDF文件中嵌入的视图设置(Acrobat软件也会这样做)。也就是说,你可以告诉你的观众从不尊重它打开的PDF文件中的任何设置,但是f.e.始终用"适合宽度"。

  5. 打开它

    关于此代码段的一些具体事项:

    1. 页面模式/UseNone表示:文档显示时没有书签或缩略图。它可以被替换为
      • /UseOutlines(也显示书签,而不仅仅是页面)
      • /UseThumbs(显示页面的缩略图,而不仅仅是页面
      • /FullScreen(以全屏模式打开文档)
    2. 构造为[/XYZ <left> <top> <zoom>]的视图模式的数组意味着:缩放因子为1(= 100%),距页面原点的左边距离是特殊的&#39; null&#39; value,表示保留以前的用户设置值;距离页面原点的最远距离也是“空白”。这个数组可以替换为
      • /Fit(使页面适应当前窗口大小)
      • /FitB(使可见页面内容适应当前窗口大小)
      • /FitH <top>' (to adapt the page width to the current window width);`表示从页面原点到窗口上边缘的所需距离。
      • ...加上其他几个我现在都记不住的了。
    3. 因此,要更改现有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是否可以创建这样的动作。