11

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

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

提前致谢。

4

7 回答 7

10

我已将以下内容添加到方法_putcatalog()中:

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

行后:

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

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

于 2011-12-09T11:08:36.677 回答
7

可以使用 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

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

于 2011-11-09T08:25:01.417 回答
2

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

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

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

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

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

于 2013-08-11T16:56:05.200 回答
2

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

于 2011-01-18T19:56:27.237 回答
0

好吧,我不确定你的意思是不是这样的: 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);
于 2011-01-18T15:37:10.373 回答
0

我遇到了同样的问题。

我有几个 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
于 2011-06-03T08:16:27.203 回答
0

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

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

改变

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

进入

$boxes = array('MediaBox');

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

于 2011-06-03T09:08:57.167 回答