1

我有一个交互式 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");
}

我期待着回复。

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

4

1 回答 1

1

请看一下StampStationery示例。

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

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

wherekeyvalue是代码片段中的键和值。

你现在想要的是这样的:

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

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

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

于 2013-06-06T07:33:34.133 回答