【问题标题】:Add Images dynamically in fillable pdf using iTextSharp使用 iTextSharp 在可填充的 pdf 中动态添加图像
【发布时间】:2013-06-06 07:23:35
【问题描述】:

我有一个交互式 PDF 表单。我可以填写这张表格,但我也想在 PDF 的底部动态添加一张图片。图像因登录用户而异。

如何添加图片?我正在使用以下代码创建数据表:

DataTable dt = new DataTable();
String pdfPath1 = Server.MapPath("pdfs\\transmittal2.pdf");
if (File.Exists(pdfPath1)) {
    dt = objClsTransmittal.GetTransmittal(jobid, cid);
    String comment = "Correspondence generated for " + dt.Rows[0]["Recipient"].ToString();
    var formfield = PDFHelper.GetFormFieldNames(pdfPath1);
    formfield["Enter Date"] = DateTime.Now.ToLongDateString();
    formfield["Contact Name"] = dt.Rows[0]["Recipient"].ToString();
    formfield["Enter Project Name"] = dt.Rows[0]"PropertyAddress"].ToString();
    formfield["Enter Project Number"] = dt.Rows[0]["JobID"].ToString();
    formfield["Company Name"] = dt.Rows[0]["Company"].ToString();
    formfield["Company address"] = dt.Rows[0]["Address1"].ToString();
    formfield["City State ZIP"] = dt.Rows[0]["address2"].ToString();
    formfield["User Name"] = dt.Rows[0]["Recipient"].ToString();
    formfield["Combo Box11"] = "Select from List";    
    var pdfcontent = PDFHelper.GeneratePDF(pdfPath1, formfield);
    PDFHelper.ReturnPDF(pdfcontent, "Transmittal.pdf");
}

期待回复。

编者注:我已经编辑了这个问题的语言。也许我也应该删除代码 sn-p 因为它是代码的不相关部分。相关部分在未在任何地方显示的GeneratePDF() 方法中。在我的回答中,我添加了几行表明GeneratePDF() 中可能做了什么。 (布鲁诺·洛瓦吉)

【问题讨论】:

  • 您所说的“可填写的 pdf”是指它有要填写的表单字段,还是您实际上的意思是除了可以将带有这些填写内容的 PDF 保存在 Adob​​e Reader 中?我问是因为有些人倾向于指后者(尽管“支持阅读器的 PDF”在这里更合适)。
  • 是的,它有表单域要填写。
  • 那么布鲁诺的回答为您指明了方向。 stamper.GetUnderContentstamper.GetOverContent 是否最能满足您的需求,您必须根据您的用例来决定。
  • @mkl 谢谢,它按要求工作,:)

标签: asp.net .net pdf itextsharp


【解决方案1】:

请查看StampStationery 示例。

当你填写表格时,我猜你已经有了这样的东西:

using (PdfStamper stamper = new PdfStamper(reader, ms)) {           
    AcroFields form = stamper.AcroFields;
    form.SetField(key, value);
}

其中keyvalue 是您的代码sn-p 中的键和值。

你现在想要的是这样的:

PdfContentByte background = stamper.GetUnderContent(pagenumber);
background.AddImage(image, x, y);

其中pagenumber是要添加图片的页面编号,image是图片实例,xy是坐标。请注意,底部的 y 值低于顶部的 y 值。实际坐标取决于表单的CropBox 值。如果没有CropBox,则使用MediaBox 值。

请注意,使用GetUnderContent() 意味着您将在现有内容下添加图像。如果图片可以覆盖现有内容,请使用GetOverContent()

【讨论】:

    猜你喜欢
    • 2015-03-13
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多