创建PDF并为字段命名,并将数据动态填充到字段中c#

本文关键字:字段 动态 填充 数据 PDF 创建 | 更新日期: 2023-09-27 18:28:06

我想创建一个带有标签的pdf。例如:姓名:_,城市:__;我想根据我的学生ID使用字段动态填空。SetField("name",Convert.ToString(dsstudent.Tables[0].Rows[0]["name"].ToString()));使用asp.net c#。

创建PDF并为字段命名,并将数据动态填充到字段中c#

最好的选择是iTextSharp,这是迄今为止渲染pdf最简单的方法。您可以使用html模板并日常替换值,也可以将任何Web控件呈现为html字符串并保存为pdf。

你可以有这样的

string html = "<h1>[PAGE_TITLE]<h1/>[STUDENTS]";
//get your values here
...
html = html.Replace("[PAGE_TITLE]", MyPageTitle);
html = html.Replace("[STUDENTS]", MyStudentsTableHtml);

然后使用iTextSharp(取自https://web.archive.org/web/20211020001758/https://www.4guysfromrolla.com/articles/030911-1.aspx)

// Create a Document object
var document = new Document(PageSize.A4, 50, 50, 25, 25);
// Create a new PdfWriter object, specifying the output stream
var output = new MemoryStream();
var writer = PdfWriter.GetInstance(document, output);
// Open the Document for writing
document.Open();
var parsedHtmlElements = HTMLWorker.ParseToList(new StringReader(html), null);
foreach (var htmlElement in parsedHtmlElements)
{
    document.Add(htmlElement as IElement);
}
document.Close();
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition",  String.Format("attachment;filename=students{0}.pdf", YourStudendsPrintingId));
Response.BinaryWrite(output.ToArray()); 

正如你所看到的,只需从你的角度进行一些调整,你就可以创建你需要的PDF。有一件事他们没有说,iTextSharp对html非常挑剔,如果它在html上发现一些错误,或者不喜欢一些旧标签(比如<HR>),它会抛出一个非常讨厌的异常,但没有指向那种问题!!