如何使用 perl (CAM::PDF, PDF::API2) 移动 PDF 页面?
我有一个 PDF 文档,我需要将页面向右移动几英寸。即就像在页面的左侧添加页边距。
CAM::PDF 或 PDF::API2 可以吗? 或者有没有人有这方面的经验?
谢谢。
I have a PDF document which I need to shift the pages to the right several inches. I.e like putting a margin on the left hand side of the page.
Can either CAM::PDF or PDF::API2 do it?
Or is there anyone have experience with it?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我是 CAM::PDF 的作者。下面的小程序将页面内容右移 100 点。
我使用了“use Data::Dumper; print Dumper($page);”提醒自己 $page 数据结构。
I'm the author of CAM::PDF. The following little program shifts the page contents right by 100 points.
I used "use Data::Dumper; print Dumper($page);" to remind myself of the $page data structure.
这是我在 PDF::API2 中执行此操作的方法:
另一种可行的方法是调整媒体框(可能还有其他框)的坐标:
如果您遇到内容被切断的问题,您可能需要获取并设置还包括
cropbox
、bleedbox
、trimbox
和artbox
中的一个或多个,但这在大多数情况下应该有效。Here's how I would do it in PDF::API2:
Another way that should work is to adjust the coordinates for the mediabox (and possibly other boxes):
If you run into issues with content getting cut off, you may need to get and set one or more of
cropbox
,bleedbox
,trimbox
, andartbox
as well, but this should work in most cases.您也可以使用 Ghostscript 来完成此操作。我将为您提供一些 Windows 示例命令(使用 Unix 时,只需将
gswin32c.exe
替换为gs
):-o
:指定输出文件。还隐式使用-dNOPAUSE -dBATCH -dSAFER
。-sDEVICE=...
:要求 Ghostscript 输出 PDF。-c <<...
:在命令行上传递的 PostScript 代码片段,以实现页面转换-f ...
:指定输入 PDF (<使用-c
后需要code>-f)。/PageShift
使用的单位是 PostScript 点。 72 磅 == 1 英寸。值[-72 0]
向左移动 72pt==1in,向顶部/底部移动 0in。现在您知道如何向右移动 2 英寸:想要向底部移动 0.5 英寸并向右移动 1 英寸吗?
You can do that also with Ghostscript. I'll give you some example commands for Windows (when using Unix, just replace
gswin32c.exe
bygs
):-o
: specifies the output file. Implicitly also uses-dNOPAUSE -dBATCH -dSAFER
.-sDEVICE=...
: asks Ghostscript to output PDF.-c <<...
: a PostScript code snippet passed on the commandline to make happen the page shift-f ...
: specifies the input PDF (-f
is required after using-c
).The units used by
/PageShift
are PostScript points. 72 pt == 1 inch. The value[-72 0]
shifts 72pt==1in to the left and 0in to top/bottom. Now you know how to shift 2 inches to the right:Wanna shift 0.5 in to the bottom and 1 inch to the right?