1

ラベル付きのPDFを作成したい。例: 名前: _ 、都市: __ ; fields.SetField("name", Convert.ToString(dsstudent.Tables[0].Rows[0]["Name"].ToString())); を使用して、studentID に従って動的に空白を埋めたいと思います。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 を作成できます。彼らが言わないことの1つは、iTextSharpはhtmlに非常にうるさいです。htmlでエラーを見つけたり、古いタグ(<HR>など)が気に入らない場合、指していないかなり厄介な例外をスローしますそんなお悩み!!

于 2013-08-17T20:27:04.150 に答える