使用pdftk将图像添加到pdf

时间:2013-12-11 22:15:53

标签: php pdf-generation pdftk

您好我使用pdftk根据提交的表单生成PDF。

直到这里我一切正常。这是添加签名的图像。我正在使用签名板,它可以很好地生成签名的图像文件。现在我想将该签名图像添加到PDF中?有谁知道这是否甚至可以用pdftk做?我没有看到这样做的选择。或者,如果它甚至可以将图像附加到我在PDF中提交的表单中吗?

4 个答案:

答案 0 :(得分:28)

首先将图像转换为PDF

convert image.png image.pdf

然后使用pdfjam(另一个免费工具)放大并偏移图像

pdfjam --paper 'a4paper' --scale 0.3 --offset '7cm -12cm' image.pdf

然后使用pdftk

组合两个PDF
pdftk text.pdf stamp image.pdf output combined.pdf

如果您需要定位图像并将其添加到普通PDF中的一个页面,则可能需要下载STAMPtk,但是您必须为此付费。

您可以从这里下载STAMPtk http://www.pdflabs.com/tools/stamptk-the-pdf-stamp-maker/

我希望它有所帮助!

答案 1 :(得分:2)

pdfjinja for Python

https://github.com/rammie/pdfjinja

此库允许您将图像添加到PDF中的签名或按钮对象,而无需合并或矢量位置信息。

<强> 1。将签名元素添加到PDF模板

Adob​​e Pro允许创建和修改PDF可填写表单。转到工具&gt;表单&gt;编辑,然后从添加新字段下拉列表中选择数字签名。

放置后,转到数字签名元素的属性。

Property Settings

在Tooltip属性中,添加

{{ Sig | paste }}

保存并关闭。

<强> 2。将您的签名图像保存为jpg或png

您可能需要一个单独的方法来将签名检索为图像,并放置在可访问的文件夹中。

第3。将方法添加到Python脚本

from pdfjinja import PdfJinja

pdf_jinja_object = PdfJinja("path_to_pdf_template")

filled_out_pdf = pdf_jinja_object({
    'firstName': 'John',
    'lastName': 'Smith',
    'sig': 'path_to_signature_image',
})

filled_out_pdf.write(open("output_file.pdf", 'wb'))

这应该会为您提供一张表格,其中您的签名图像会放置在模板中创建的位置。

答案 2 :(得分:1)

在我们的情况下,我们必须在pdf中添加动态签名。我已经使用pdftk和imagemagick库实现了它。 (需要安装pdftk和imagemagick)

  1. 首先将图像转换为pdf,如下所示: (使用magick而不是Windows转换)

exec(“转换签名图像-调整大小26%-透明白-a4 + 25 + 102-质量75输出/stamp.pdf”);

说明:

  • 调整大小:调整图像的大小。
  • 透明使图像背景透明
  • page:将页面设置为a4,而(25,102)设置图像pdf从左到上的位置。

2。然后执行以下命令:

exec(“ pdftk main.pdf multistamp stamp.pdf output output / final.pdf”);

答案 3 :(得分:0)

首先将图像转换为pdf格式为:(使用magick而不是Windows转换) exec(“转换签名图像-调整大小26%-透明白色-a4 + 25 + 102-质量75输出/stamp.pdf”);

说明:

调整大小:调整图像的大小。 透明使图像背景透明 page:将页面设置为a4,(25,102)设置图像pdf的位置,从左到上。 2.然后执行以下命令:

exec(“ pdftk main.pdf multistamp stamp.pdf output output / final.pdf”);

在特定位置之前要定位签名,然后在显示PDF之前添加一些空白PDF,如下所示:

exec("convert signature-image -resize 26% -transparent white -page a4+25+102 -quality 75 outputs/stamp.pdf");
            exec("convert xc:none -page A4 outputs/blank1.pdf");
            exec("convert xc:none -page A4 outputs/blank2.pdf");
exec("convert xc:none -page A4 outputs/blank3.pdf");
            exec("pdftk outputs/blank1.pdf outputs/stamp.pdf outputs/blank2.pdf  outputs/blank3.pdf cat output outputs/sign.pdf");
          exec("pdftk main.pdf multistamp outputs/sign.pdf output outputs/final.pdf");