我有一个交互式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()
中完成了什么。 (Bruno Lowagie)
答案 0 :(得分:1)
请查看StampStationery示例。
当你填写表格时,我猜你已经有了这样的事情:
using (PdfStamper stamper = new PdfStamper(reader, ms)) {
AcroFields form = stamper.AcroFields;
form.SetField(key, value);
}
其中key
和value
是代码段中的键和值。
你现在想要的是这样的:
PdfContentByte background = stamper.GetUnderContent(pagenumber);
background.AddImage(image, x, y);
其中pagenumber
是您要添加图片的网页编号,image
是图片实例,x
和y
是坐标。请注意,底部的y
值低于顶部的y
值。实际坐标取决于表单的CropBox
值。如果没有CropBox
,请使用MediaBox
值。
请注意,使用GetUnderContent()
表示您要在现有内容下添加图片。如果图片可以覆盖现有内容,请使用GetOverContent()
。