用图像标记 pdf
stamp a pdf with an image
我目前正在编写一个应用程序,其中一个过程是用用户提供的图像标记现有的 1 页 pdf 文档。图章需要缩放并正确定位到 pdf 上。
我已经成功地遵循了 Kurt Pfeifle 对 Stamp PDF 文件的回答中的说明,并控制了 stamp 文件的位置
。
在答案中,库尔特
- 使用 ghostscript 即时创建图章。
- 创建一个空的 A4 大小的 pdf,其中包含图章位置。
- 然后他使用
pdftk
将新创建的 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
我目前正在编写一个应用程序,其中一个过程是用用户提供的图像标记现有的 1 页 pdf 文档。图章需要缩放并正确定位到 pdf 上。
我已经成功地遵循了 Kurt Pfeifle 对 Stamp PDF 文件的回答中的说明,并控制了 stamp 文件的位置 。
在答案中,库尔特
- 使用 ghostscript 即时创建图章。
- 创建一个空的 A4 大小的 pdf,其中包含图章位置。
- 然后他使用
pdftk
将新创建的 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 图片正确添加到 pdfgs -o A4-image.pdf -sDEVICE=pdfwrite -g5950x8420 -c "<</PageOffset [100 500]>> setpagedevice" -f image.pdf