用图像标记 pdf

stamp a pdf with an image

我目前正在编写一个应用程序,其中一个过程是用用户提供的图像标记现有的 1 页 pdf 文档。图章需要缩放并正确定位到 pdf 上。

我已经成功地遵循了 Kurt Pfeifle 对 Stamp PDF 文件的回答中的说明,并控制了 stamp 文件的位置

在答案中,库尔特

  1. 使用 ghostscript 即时创建图章。
  2. 创建一个空的 A4 大小的 pdf,其中包含图章位置。
  3. 然后他使用 pdftk
  4. 将新创建的 pdf 与原始 pdf 合并

正如我所说,这一切都很好。但是,如果我对自己的图像文件(已转换为 pdf)执行相同的过程,则第二步中的尺寸会出现问题。命令中的大小似乎被忽略了,相反,pdf 的大小与图像的大小相同。下面的 Se 输出用于比较原始命令与原始图章作为 pdf 以及我使用转换后的图像修改的命令。

原工作命令:

gs \
  -o A4-stamp.pdf \
  -sDEVICE=pdfwrite \
  -g5950x8420 \
  -c "<</PageOffset [280 790]>> setpagedevice" \
  -f stamp-small.pdf

已修改带有图像的命令

 gs \
  -o A4-image.pdf \
  -sDEVICE=pdfwrite \
  -g5950x8420 \
  -c "<</PageOffset [280 790]>> setpagedevice" \
  -f image.pdf

可以看到,尺寸和比例都错了,应该和原来的一样。

原始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"

我在命令中使用的图像如下,但在将图像转换为 pdf 后,我尝试过的任何图像都会发生同样的事情:

convert image.png image.pdf

似乎有一些与以下相关的问题:

  • png 图像的透明度(PDF 不支持透明度)
  • 将输出从 jpg 转换为 pdf(转换中存在某种错误?)

总之,不用深究问题,可以用

  • convert image.png -size 640x562 xc:white +swap -compose over -composite image.jpg - 这会将 png 透明度移除为白色(作为背景)并将图像转换为 jpg(注意 -size,这与您在此 post 中添加的图像相同,但是应声明为适合您邮票的正确邮票)
  • img2pdf image.jpg -o image.pdf - 将 jpg 图片正确添加到 pdf
  • gs -o A4-image.pdf -sDEVICE=pdfwrite -g5950x8420 -c "<</PageOffset [100 500]>> setpagedevice" -f image.pdf