この質問は、NReco の PdfGeneratorコンポーネントに関するものです。
この製品を使用して、動的に生成された HTML 文字列を C# を使用して .NET MVC フレームワーク内の Pdf ドキュメントに変換します。
Pdf のフッターにページ番号 (例: 1/5) を追加する方法を探しているときに、SOでこれとこれに出会いました。当然のことながら、どちらのオプションも同じ目標を達成するための同様のアプローチを提供しているようです。
コード自体は理にかなっていますが、私が理解するのに苦労しているのはこれです - 私のドキュメントの内容 (または HTML 文字列) はビュー内で生成されます。HTML 文字列は、実際の変換プロセスのためにコントローラー (.cs) に渡されます。MVC フレームワークに関する私の非常に限られた知識では、コントローラーに JavaScript コードを追加する方法はないと思います (またはありますか?)。
そのため、ドキュメント変換を処理する C# 関数内に上記の 2 つの JavaScript ベースのメソッドを組み込む方法がよくわかりません。それとも、これはビュー内で行うべきことですか?
コントローラ:
[HttpPost]
public ActionResult Html2Pdf(FormCollection form) {
var docTitle = form["doctitle"].ToString();
var headerHtml =
"<div style='width:100%; margin-top:1em; display:block;'>" +
"<img src='" + System.Web.HttpContext.Current.Server.MapPath("~") + "/media/images/document_banner.png' />" +
"</div>" +
"<div style='width:100%; bottom:110px; left:0; position:relative; display:block;'>" +
"<span style='color:#fff; font-size:2.5em; font-family:georgia; margin-left:1em;'>" + docTitle + "</span>" +
"</div>";
var footerHtml =
"<div style='width:100%; text-align:center; border-top:1px solid #abc; margin-top:2em;'>Page 0 of 0</div>;
var htmlToPdf = new HtmlToPdfConverter();
// various parameters get set here
htmlToPdf.PageHeaderHtml = headerHtml;
htmlToPdf.PageFooterHtml = footerHtml;
....
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=MyTestDocument.pdf");
htmlToPdf.GeneratedPdf(form["htmlcontent"].ToString(), null, Response.OutputStream); // form["htmlcontent"] holds the document body
Response.End();
Return new EmptyResult();
}