【问题标题】:Command line tool to mark PDF to open in Single Page view用于标记 PDF 以在单页视图中打开的命令行工具
【发布时间】:2014-10-22 00:46:58
【问题描述】:

小问题: 是否有 PDF 命令行/shell 工具(用于 osx)可以在 PDF 上设置必要的属性,以便最初在“单页视图”(适合窗口)中打开它


更多信息

我目前正在使用 WkhtmlToPdf 生成 PDF,在某些情况下,通过 PHP 使用 PDFTK 和 Mac 上的一些 shell 调用合并生成的文件。

但是,我希望用户 PDF 阅读器默认在“单页视图”/“适合窗口”中打开这些文档。

我遇到了以下question,这表明此功能已被放在 PDFTk 的功能请求列表中,但我找不到有关它正在实施的参考。我也遇到过Advanced PDF Tools(参见 -q [OpenAction] 标志)但是,这个工具似乎只适用于 Windows,我需要支持 OSX 的东西

【问题讨论】:

    标签: php macos shell pdf pdftk


    【解决方案1】:

    由于提问者提到了命令行,所以这个答案假定读者知道如何创建脚本并使其可执行。

    使用您的操作系统的软件包系统(对于 MacOS,我建议 brew)您应该能够安装 python3-pike 库。然后创建一个包含以下内容的 Python 脚本:

    from pikepdf import Pdf, Dictionary, Name
    pdf=Pdf.open('input.pdf')
    pdf.root.PageLayout=Name('/SinglePage')
    pdf.root.PageMode=Name('/FullScreen')
    pdf.save('output.pdf')
    

    当您运行它时,它将创建 output.pdf,它是 input.pdf 的副本,除了 PDF 默认为单页布局和全屏。

    【讨论】:

      【解决方案2】:

      您可以使用 PostScript sn-ps 使用特殊的 pdfmark 运算符在 Ghostscript 的帮助下将适当的 DOCVIEW 设置插入到目标 PDF 中。

      这是一个嵌入在文本文件中的示例,my-pdf-docview-pdfmark.ps

      [ /PageMode /UseOutlines  % Display bookmarks upon opening the doc
       %/PageMode /UseThumbs    % Display thumbnails upon opening the doc
       %/PageMode /FullScreen   % Open the document in fullscreen mode
       %/PageMode /None         % Display neither bookmarks nor thumbnails upon opening
        /Page 2                 % Open document with page 2, not page 1!
       %/View [ /XYZ null null null ]
                                % Go to specified page and retain same ... 
                                % ... horizontal/vertical offset+zoom as current page
        /View /Fit              % Fit page to window
       %/View /FitB             % Fit visible part of page to window
       %/View [/FitH 220]       % Fit page width to window; 220 is distance ...
                                % ... of page origin from top of window
                                               /DOCVIEW    pdfmark
      
       [ {Catalog} <<
                    /PageLayout /SinglePage
                   %/PageLayout /OneColumn
                   %/PageLayout /TwoColumnRight
                   %/PageLayout /TwoColumnLeft
                   >>                          /PUT        pdfmark
      

      注意,只看到左方括号 [ 并不是错误,但没有右方括号。 [ 是一个操作符,被final关键字pdfmark封闭。

      上面的某些行未使用初始 % 字符进行注释,以向您展示其他替代方案。

      请注意,这可能不适用于所有用户或所有查看者。这些设置只是对观众的提示和建议,他们可能尊重也可能不尊重它们。此外,用户可以覆盖查看器的配置,并告诉它始终忽略这些提示,而是按照用户指定的方式打开所有 PDF。

      创建上述文件后,将其应用于 PDF:

      gs -o output.pdf               \
         -sDEVICE=pdfwrite           \
           my-pdf-docview-pdfmark.ps \
         -f input.pdf
      

      【讨论】:

        【解决方案3】:

        您可以使用CPDF

        cpdf in.pdf -set-page-layout SinglePage AND -fit-window -o out.pdf
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-09
          • 1970-01-01
          相关资源
          最近更新 更多