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

时间:2013-08-17 19:47:38

标签: c# pdf

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

1 个答案:

答案 0 :(得分:1)

最好的选择是iTextSharp,这是目前呈现pdf的最简单方法。您可以使用html模板和dinamically替换值,或者只是将任何webcontrol渲染为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(取自http://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上发现了一些错误或者不喜欢一些旧标签(比如说&lt; HR&gt;)它抛出一个非常讨厌的异常而不指向对那种问题!!