【发布时间】:2012-01-18 05:45:29
【问题描述】:
有人知道如何将 PDF 文件标记为 PDF 文件以及用于定位 PDF 文件标记的控件吗?
我有一个文件 orginal.pdf 和 logo.pdf。我想在文件original.pdf 的左上角标记logo.pdf 文件到文件orginal.pdf。如何用 Ghostscript 或 pdftk 完成?
【问题讨论】:
标签: pdf ghostscript pdftk
有人知道如何将 PDF 文件标记为 PDF 文件以及用于定位 PDF 文件标记的控件吗?
我有一个文件 orginal.pdf 和 logo.pdf。我想在文件original.pdf 的左上角标记logo.pdf 文件到文件orginal.pdf。如何用 Ghostscript 或 pdftk 完成?
【问题讨论】:
标签: pdf ghostscript pdftk
可以用 Ghostscript plus pdftk 完成,但至少需要 2 个不同的步骤。
AFAIK,你不能直接控制pdftk 的印章位置。默认情况下,它会将图章放在页面的中心,同时执行“缩放以适应”操作。
因此,您必须先修复您的图章,以便首先将其放置在空白页面上,就在您想要的位置。您可以在第一步中借助 Ghostscript 实现这一点。然后,在第二步中,使用 pdftk 合并两个文件。
让我们举个例子。
首先:创建一个“stamp-small.pdf”。 (你已经有了;我需要一个来证明原理。)
gs \
-o stamp-small.pdf \
-sDEVICE=pdfwrite \
-g3200x500 \
-c "/Helvetica-Bold findfont 36 scalefont setfont" \
-c "0 .8 0 0 setcmykcolor" \
-c "12 12 moveto" \
-c "(This is my stamp) show" \
-c "showpage"
此示例适用于 Linux 或 Mac OS X。在 Windows 上,您可以这样修改:
gswin32c.exe ^
-o stamp-small.pdf ^
-sDEVICE=pdfwrite ^
-g3200x500 ^
-c "/Helvetica-Bold findfont 36 scalefont setfont" ^
-c "0 .8 0 0 setcmykcolor" ^
-c "12 12 moveto" ^
-c "(This is my stamp) show" ^
-c "showpage"
(您也可以将所有内容放在一行中,然后跳过相应操作系统的行继续标记。)第一个命令将一系列简单的 PostScript 语句传递给 Ghostscript 的命令行,并告诉它创建一个小的 PDF 页面尺寸为 320x50 磅。这应该模拟您寻求放置的“小”印章。
第二步:创建一个整页(在我的例子中是 A4 大小)的 PDF 文件,可以在第三步中作为真正的印章应用:
gs \
-o A4-stamp.pdf \
-sDEVICE=pdfwrite \
-g5950x8420 \
-c "<</PageOffset [280 790]>> setpagedevice" \
-f stamp-small.pdf
在 Windows 上:
gswin32c.exe ^
-o A4-stamp.pdf ^
-sDEVICE=pdfwrite ^
-g5950x8420 ^
-c "<</PageOffset [280 790]>> setpagedevice" ^
-f stamp-small.pdf
这个命令实现了几件事:
实际上,我原来的小号邮票串现在位于 A4 页面的右上角。
第三:现在您可以使用 pdftk 将这个新的“印章”应用到您的原始 PDF 文件中:
pdftk original.pdf stamp A4-stamp.pdf output stamped.pdf
或者,为多页原始 PDF 的所有页面加盖戳:
pdftk original.pdf multistamp A4-stamp.pdf output stamped.pdf
这个示例应该让您充分了解如何为您自己的logo.pdf 开发类似的过程,就像我为我的stamp-small.pdf 所做的那样。 (我为右上角做的,你想要左上角的。)
【讨论】:
pdfjam 创建覆盖 PDF 可能会更容易掌握。它具有--scale 和--offset 等选项。我使用convert、pdfjam 和pdftk stamp 在我的PDF 上放置了一个PNG。