【问题标题】:Set PDF to print with no scaling将 PDF 设置为不缩放打印
【发布时间】:2011-06-11 04:12:14
【问题描述】:

我正在生成一个 PDF(使用 fpdf),我想知道是否有办法将文档的属性设置为默认不缩放打印。

因此,当您从打印对话框菜单中选择打印时,缩放设置为无。我正在尝试确定这是用户设置还是我在创建 PDF 时可以控制的设置。

提前致谢。

【问题讨论】:

    标签: pdf printing fpdf


    【解决方案1】:

    我已经在_putcatalog() 方法中添加了以下内容:

    $this->_out('/ViewerPreferences [/PrintScaling/None]');
    

    行后:

    $this->_out('/Type /Catalog');
    

    实现一个方法既快速又简单...

    【讨论】:

    • 这对我有用。我将 FPDF 子类化并覆盖 _putcatalog() 以在其现有输出之后输出“/ViewerPreferences >”。
    • 当我使用 ReportLab 的setViewerPreferences('PrintScaling', 'None') 时,它生成了/ViewerPreferences 12 0 R 行并在页面下方添加了12 0 obj << /PrintScaling /None >>。另一个可能的值似乎是/PrintScaling /AppDefault
    【解决方案2】:

    可以使用 Adob​​e Acrobat 关闭单个 PDF 文件的打印缩放,方法是转到文件 -> 首选项 -> 高级 -> 页面缩放。 (您可以使用 Acrobat 的试用版进行尝试。)

    至于在代码中实现这一点,我已经尝试过但未能成功,但文件中的关键区别似乎是:

    10 0 obj
    <</Metadata 2 0 R/Outlines 6 0 R/Pages 7 0 R/Type/Catalog/ViewerPreferences<</PrintScaling/None>>>>
    endobj
    

    与非缩放 PDF 相比

    10 0 obj
    <</Metadata 2 0 R/Outlines 6 0 R/Pages 7 0 R/Type/Catalog>>
    endobj
    

    对于那些使用默认收缩以适应选项的用户。

    【讨论】:

    【解决方案3】:

    缩放由 PDF 应用程序控制 - 它未在文件中设置。

    【讨论】:

    • 感谢您的回答。这是否可以通过编写插件并让用户安装插件来实现?
    • 您可以发布自己的查看器或插件,但这需要大量工作,并且您必须保证用户必须使用它
    • 这个答案具有误导性。有一种方法可以在文件中嵌入首选项以请求不缩放。大多数 PDF 应用程序将遵循首选项,因此不会缩放文档。
    • 您可以在页面上设置默认缩放,但也可以由用户(以及通过 PDF 中的操作)进行调整。像 Acrobat 这样的查看器还允许多个打印选项和视图。
    【解决方案4】:

    对我来说,更改 FPDF 目录方法 _putcatalog() 并添加

        $this->_out('/ViewerPreferences [/PrintScaling/None]');
    

    没有实现目标,所以我查看了 Acrobate XI PDF 生成的代码,发现了更多的冗词。添加以下代码

        $this->_out('/ViewerPreferences<</Duplex/Simplex/Enforce[/PrintScaling]/PrintScaling/None>>');
    

    创建了一个不再默认缩放的 PDF,而是只提供了打印所需的实际大小的选项。

    【讨论】:

    • 你把这个放在函数的什么地方了?最后还是按照 onosenday 的回答所建议的,在“/Type /Catalog”输出之后?
    【解决方案5】:

    嗯,我不确定你的意思是不是这样的: http://www.fpdf.org/en/doc/setdisplaymode.htm

    或者没有“缩放”图像?

    $im2 = pdf_open_image_file($dokument, 'jpeg', 'example.jpg');
    pdf_place_image($dokument, $im2, 395, 655, 1.0); /* 1.0 = qualiti/scaling - 1.0 is original .../*
    pdf_close_image($dokument, $im2);
    

    【讨论】:

    • 这很有用,但我正在寻找不同的东西。我更新了帖子以使其更加清晰。感谢您的建议。
    【解决方案6】:

    我遇到了同样的问题。

    我有几个 PDF,其中 PDF 的内容(即文本和图像)非常靠近 PDF 边框,但打印对话框 Preview/Acrobat 仍然建议以 100% 缩放比例打印它,从而切断不存在的内容由于打印机的自然边距,因此无法打印。

    例如,在 Pages 中创建任何 PDF 都会生成默认以 100% 缩放打印的 PDF。

    但是,如果我使用与 FPDF 相关的 TCPDF 创建 PDF,则打印机对话框建议对其进行缩放以适合页面。

    我怀疑创建 PDF 的方式不同。我怀疑 Pages 和其他工具会创建单独的图层,然后以不同的方式处理它们,可能是通过标志或其他东西。

    我比较了我的两个 PDF 文件的可读部分,确实发现了一些差异,尤其是在文档的开始方式上。我对 PDF-Sources 的了解非常有限,所以我只能猜测需要更改的内容。 是否有说明如何控制可打印对象/区域的 PDF 参考?

    这里是最小 PDF 的内容,将在不缩放的情况下打印:

    %PDF-1.4
    1 0 obj
    << /Type /Catalog
    /Outlines 2 0 R
    /Pages 3 0 R
    >>
    endobj
    2 0 obj
    << /Type /Outlines
    /Count 0
    >>
    endobj
    3 0 obj
    << /Type /Pages
    /Kids [4 0 R]
    /Count 1
    >>
    endobj
    4 0 obj
    << /Type /Page
    /Parent 3 0 R
    /MediaBox [0 0 595 842]
    /Contents 5 0 R
    /Resources << /ProcSet 6 0 R
    /Font << /F1 7 0 R >>
    >>
    >>
    endobj
    5 0 obj
    << /Length 73 >>
    stream
    BT
    /F1 24 Tf
    100 100 Td
    (Hello World) Tj
    ET
    endstream
    endobj
    6 0 obj
    [ /PDF /Text ]
    endobj
    7 0 obj
    << /Type /Font
    /Subtype /Type1
    /Name /F1
    /BaseFont /Helvetica
    /Encoding /MacRomanEncoding
    >>
    endobj
    xref
    0 8
    0000000000 65535 f
    0000000009 00000 n
    0000000074 00000 n
    0000000120 00000 n
    0000000179 00000 n
    0000000364 00000 n
    0000000466 00000 n
    0000000496 00000 n
    trailer
    << /Size 8
    /Root 1 0 R
    >>
    startxref
    625
    %%EOF
    

    【讨论】:

      【解决方案7】:

      好的,我想我明白了。 试试这个:打开你的 TCPDF 创建的 PDF 并删除所有出现的 viewerpreferences 和除 MediaBox 之外的任何框语句......这样做最终导致了一个无打印默认缩放的 PDF :) 像那些附加信息这样的接缝 - 用于专业打印 - 只会混淆常见的 pdf 查看器,而不是帮助任何事情:)

      转到 tcpdf.php 并将方法 _putpages 中的第 8529 行更改如下

      改变

      $boxes = array('MediaBox', 'CropBox', 'BleedBox', 'TrimBox', 'ArtBox');
      

      进入

      $boxes = array('MediaBox');
      

      在我的 PDF 输出中,这立即消除了缩放问题 :)

      【讨论】:

        猜你喜欢
        • 2012-08-31
        • 2010-11-08
        • 2014-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-13
        相关资源
        最近更新 更多