You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pdftk stamp合并PDF时小尺寸叠加层被放大至整页如何解决

pdftk叠加PDF时二维码被拉伸问题解决

运行环境

  • FreeBSD-12.3p5
  • pdftk 3.3.2_1

问题原因

pdftk的stamp/background命令默认逻辑为:将叠加层PDF的页面等比拉伸至完全匹配底层主PDF的页面尺寸后再完成叠加,这个缩放行为和叠加层内的图片原始像素尺寸、文件单独打开时的视觉显示大小没有关联。
使用ImageMagick直接将87x87像素的PNG转PDF时,若不显式指定PDF的页面尺寸参数,生成的QR.pdf实际页面尺寸远大于87像素对应的物理尺寸——只是二维码内容被放置在大页面的角落,单独打开时视觉上显示为小尺寸。执行stamp操作时,整个QR.pdf页面会被拉伸到主PDF的整页大小,二维码也就同步被放大至整页。

解决方法

生成叠加层QR.pdf时,直接将它的页面尺寸设置为和主文档IN999999.pdf完全一致,把二维码放在目标位置,其余区域保留透明,pdftk检测到两个文件页面尺寸匹配时就不会触发缩放逻辑。
操作步骤如下:

  • 先查询主PDF的实际页面尺寸,执行命令:
pdfinfo IN999999.pdf | grep "Page size"

比如输出为Page size: 595 x 842 pts,即对应标准A4尺寸。

  • 替换原有ImageMagick转PDF命令,显式指定页面尺寸、二维码放置位置。例如需要把二维码放在页面右下角、距离边缘各10pt时,命令如下:
magick convert -transparent white -page 595x842 -gravity SouthEast -geometry +10+10 QR.png QR.pdf

相关参数说明:

  • -page 595x842:指定生成PDF的页面尺寸和主文档完全一致,替换为上一步查到的主文档实际尺寸即可
  • -gravity SouthEast:设置定位基准为页面右下角,可根据需求替换为其他定位值:NorthWest对应左上角、NorthEast对应右上角、SouthWest对应左下角、Center对应页面居中
  • -geometry +10+10:设置距离定位基准点的偏移量,两个数值分别对应水平、垂直方向的边距,单位为pt
  • 执行原有的pdftk合并命令即可:
pdftk IN999999.pdf stamp QR.pdf output QRIN999999.pdf

最终生成的文件中二维码会保持原始87x87像素大小,固定在指定位置,不会出现拉伸变形。
如果需要做像素级精准定位,可按PDF默认72DPI的换算规则计算坐标:1pt对应1像素的物理长度,87像素的二维码对应边长为87pt的正方形,直接按目标位置核算偏移数值即可。


内容的提问来源于stack exchange,提问作者James B. Byrne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 19:01:46