【问题标题】:Add image in an existing PDF with itextsharp使用 itextsharp 在现有 PDF 中添加图像
【发布时间】:2026-02-12 22:35:01
【问题描述】:

所以我创建了一个带有文本框的 PDF 模板表单,这些文本框是可编辑的字段。我能够通过 MVC 4.0 应用程序将包含数据库中的值的预填充 PDF 生成到模板中。哪个工作正常。现在我想将文件夹中的图像添加到 PDF 中,它将一种形式与另一种形式区分开来。图像将取决于用户输入。图像将位于 PDF 的底部。我没有看到任何图像框或图像容器作为归档选项。我只能看到文本框、复选框、收音机、列表框等,但没有像 iimage 持有者那样。

有人知道如何将图像动态添加到 PDF 中吗?

【问题讨论】:

  • 我认为这不可能。不应将 PDF 表单与 HTML 表单混淆。他们是不同的野兽。在 PDF 表单中,没有 post-type request-response 循环。输入的文本只是在 PDF 中设置,就像在 PDF 中硬编码一样。
  • "我能够通过 MVC 4.0 应用程序将我的数据库中的值生成预填充的 PDF 到模板中。"你是怎么做到的?我敢打赌您正在使用一个库,而且很可能同一个库可用于将图像添加到现有 PDF 文件中。
  • @yms 是的,我正在使用 itextsharp 库。我们说话时我正在调查,我在寻找之前提交的表格,但现在正在寻找图书馆。

标签: c# asp.net-mvc-4 pdf pdf-generation itextsharp


【解决方案1】:

您可以在official documentation,更具体地说,在chapter 8 中找到问题的答案。在标题为“按钮”的第 8.2.3 节中,我解释了我们通常使用按钮作为图像的占位符,因为按钮可以有一个 图标

ReplaceIcon 示例展示了如何替换现有按钮的图标。当你使用 C# 时,你可能想看看ReplaceIcon.cs

PdfReader reader = new PdfReader(aPdf);
using (MemoryStream ms = new MemoryStream()) {
    using (PdfStamper stamper = new PdfStamper(reader, ms)) {
        AcroFields form = stamper.AcroFields;
        PushbuttonField ad = form.GetNewPushbuttonFromField("button_name");
        ad.Layout = PushbuttonField.LAYOUT_ICON_ONLY;
        ad.ProportionalIcon = true;
        ad.Image = Image.GetInstance(yourImage);
        form.ReplacePushbuttonField("button_name", ad.Field);
      }
    }
    // ms will contain your PDF in memory
}
reader.Close();

请注意,ad.ProportionalIcon = true; 行将缩放您的图像以使其适合按钮。

【讨论】:

    最近更新 更多