1

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

4

1 回答 1

1

最好的选择是 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(取自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 上发现一些错误或者不喜欢某些旧标签(比如 <HR>)它会引发一个非常讨厌的异常,它并不指向那种问题!!

于 2013-08-17T20:27:04.150 回答