【问题标题】:Adding an image to a pdf with pdftk使用 pdftk 将图像添加到 pdf
【发布时间】:2013-12-11 22:15:53
【问题描述】:

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

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

【问题讨论】:

  • 这不是和stackoverflow.com/q/20235541/2870069密切相关吗?
  • 谢谢,这看起来很有希望我会尝试测试一下,但唯一的事情是,我希望能够将图像放在页面中间的某个位置,我不知道效果如何
  • 如果图像位置是固定的,放在哪里都没有关系。只需使用--offset 部分将其放置在所需位置。
  • 我一直在搞砸这个,我有一个 3 页的 pdf,当我运行它时,由于某种原因它显示在所有 3 页上,我只想在最后一页上显示它,我该怎么做?
  • 如果您只想要一页上的图像,我会将您的 3 页文档拆分为两个文档,仅在一个文档上运行图章,然后重新组合两个页面。 PDFtk 也可以做到这一点。

标签: php pdf-generation pdftk


【解决方案1】:

先将图片转成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/

希望对你有帮助!

【讨论】:

  • 只需添加 Linux 的安装说明(非常简单)。 PDFjam:apt-get install texlive-extra-utils,PDFtk:apt-get install pdftk.
  • 以及 Mac 的安装说明。 PDFjambrew install homebrew/tex/pdfjamPDFtk:目前不支持 Homebrew(但是您可以在 SO 上找到指南如何通过终端安装它)所以使用官方下载页面pdflabs.com/tools/pdftk-server 或者如果你在 OSX 10.11.4 上使用这个链接(并且 PDFtk 只是冻结并且什么都不做)pdflabs.com/tools/pdftk-the-pdf-toolkit/…
  • 对于美国用户,您可以将a4paper 替换为letterpaper 以获得来自latex geometry 包的8.5"x11"
  • 我经常看到这种类型的答案,但对我来说,将PDF分成几页,签名你想要的页面,然后重新组合对我来说似乎更直接?
  • 确实,在 pdfjam 之后,使用pdftk text.pdf cat 5 output page5.pdf 提取第 5 页,然后是 pdftk page5.pdf stamp signature.pdf output signed.pdf,然后是 pdftk A=text.pdf B=signed-page5.pdf cat A1-4 B A6-end output signed-text.pdf。否则,请参阅@Tanupryia 下面的评论以添加空白页签名.pdf
【解决方案2】:

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

  1. 首先将图像转换为 pdf 为: (对于 windows 使用 magick 而不是 convert)

exec("convert signature-image -resize 26% -transparent white -page a4+25+102 -quality 75 outputs/stamp.pdf");

说明:

  • resize : 调整图片大小。
  • 透明使图像背景透明
  • page : 将 page 设置为 a4 和 (25,102) 设置图像 pdf 从左侧和顶部的位置。

2.然后执行以下命令:

exec("pdftk main.pdf multistamp stamp.pdf output outputs/final.pdf");

【讨论】:

  • 是否有 pdftk 的参数或转换以将图像添加到任意页面(如 pdf 的第 4 页)?
  • 为此,您必须添加 3 个空白 pdf 并将其与 stamp.pdf 结合起来
  • 是否可以在页面的水平和垂直中心放置图章?
  • 还有什么类似的方法可以在pdf文件中添加页码。
【解决方案3】:

pdfjinja for Python

https://github.com/rammie/pdfjinja

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

1.将签名元素添加到您的 PDF 模板

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

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

在 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'))

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

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
  • 谢谢,我添加了一个 3 步演练来提供帮助。
  • 这应该是正确的答案。 Generate a signature.pdf 与其说是真正的答案,不如说是一个荒谬的笑话。并支付一些脚本来做到这一点?这简直太搞笑了。
  • 微小的更正:在“sig”上,值应该是图像的路径:os.path.join(dirname, './sig.png') 虽然我无法使其工作。
  • 很好,我更新了那部分。看看是否可以设置断点来查看“Sig”属性。它应该具有您想要的确切图像的完整路径。
【解决方案4】:

首先将图像转换为pdf为:(使用magick而不是convert for windows) exec("convert signature-image -resize 26% -transparent white -page a4+25+102 -quality 75 outputs/stamp.pdf");

说明:

resize : 调整图片大小。 透明使图像背景透明 page :将 page 设置为 a4 和 (25,102) 设置图像 pdf 从左侧和顶部的位置。 2.然后执行以下命令:

exec("pdftk main.pdf multistamp stamp.pdf output outputs/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");

【讨论】:

  • 添加一些描述。
猜你喜欢
  • 2017-12-19
  • 1970-01-01
  • 2015-02-16
  • 2012-01-21
  • 2010-12-22
  • 1970-01-01
  • 1970-01-01
  • 2018-11-27
  • 1970-01-01
相关资源
最近更新 更多