用图像标记pdf

时间:2017-06-10 11:33:17

标签: pdf ghostscript

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

我已成功跟进Kurt Pfeifle's answer to Stamp PDF file with control for position of stamp file 中的结构。

答案中,库尔特

  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
    

    Output of original command

    带图像的修改命令

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

    enter image description here

    可以看出,尺寸和比例都是错误的,应与原版相符。

    原始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之后,我尝试过的任何图像都会发生同样的事情:

    enter image description here

    convert image.png image.pdf

1 个答案:

答案 0 :(得分:2)

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

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

简而言之,如果不详细讨论问题,可以使用

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