【发布时间】:2010-04-23 07:14:29
【问题描述】:
如何将现有的 pdf 调整为另一种格式。我不想裁剪 pdf,它必须缩小。 (用于打印问题)
当我尝试这个时它不起作用,因为 pdf 被裁剪而不是缩放
document.SetPageSize(new Rectangle(558.40f, 790.83f)); // 558.40f == 197mm
【问题讨论】:
标签: c# pdf pdf-generation itextsharp itext
如何将现有的 pdf 调整为另一种格式。我不想裁剪 pdf,它必须缩小。 (用于打印问题)
当我尝试这个时它不起作用,因为 pdf 被裁剪而不是缩放
document.SetPageSize(new Rectangle(558.40f, 790.83f)); // 558.40f == 197mm
【问题讨论】:
标签: c# pdf pdf-generation itextsharp itext
很可能是因为 PDF 不会根据页面大小进行缩放。当您设置页面大小时,我指的是页面元素 MediaBox,您正在定义呈现区域的物理大小。无论呈现区域如何,页面上的所有内容都以相同的比例绘制。
为了改变这一点,您需要截取内容流并预先进行矩阵运算以进行所需的缩放。不知道在iTextSharp中能不能做到这一点,但是实际的PDF操作符是m,如果你插入这个:
sx sy 0 0 0 0 m
其中 sx 和 sy 是浮点数,表示您要应用的 X 和 Y 中的比例。在您的情况下,您将 X 从 210 更改为 197,即 X 中的 0.938 比例。Y 从 297 变为 279,因此比例为 0.939,因此您需要插入:
.938 .939 0 0 0 0 m
进入内容流以影响除了更改 MediaBox 之外的更改。
【讨论】: