이 질문은 NReco's PdfGenerator 구성 요소와 관련이 있습니다.PdfGenerator를 사용하여 PDF에 페이지 번호 추가
이 제품을 사용하면 동적으로 생성 된 HTML 문자열을 .NET MVC 프레임 워크 내에서 C#을 사용하여 Pdf 문서로 변환 할 수 있습니다.
페이지 번호 (예 : 1 of 5)를 Pdf의 바닥 글에 추가하는 방법을 찾고있는 중에 this과 this이 나타났습니다. 그리고 두 가지 옵션 모두 동일한 목표를 달성하는 데 유사한 접근법을 제공하는 것 같습니다.
코드 자체가 의미가 있지만, 이해하기 힘든 부분은 내 문서 내용 (또는 HTML 문자열)이보기 내부에서 생성된다는 것입니다. HTML 문자열은 실제 변환 프로세스를 위해 컨트롤러 (.cs)로 전달됩니다. MVC 프레임 워크에 관한 매우 제한된 지식으로 인해 컨트롤러에 JavaScript 코드를 추가 할 수있는 방법이 없다고 생각합니다 (또는 거기에 있습니까?).
위의 두 JavaScript 기반 메서드가 문서 변환을 처리하는 C# 함수 내에 어떻게 통합 될 수 있는지 잘 모르겠습니다. 또는 View 내부에서 수행해야하는 작업입니까?
컨트롤러 : 당신은 당신이 PageHeaderHtml 또는 PageFooterHtml 속성을 설정하면 PdfGenerator 당신을 위해 그렇게 할 것이기 때문에 페이지 번호를 렌더링 (wkhtmltopdf 도움말)에서 자바 스크립트 코드를 추가 할 필요가 없습니다
[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();
}