MVC 뷰를 PDF로 변환하기 위해 iTextSharp를 사용하고 있습니다. 뷰는 인라인 스타일을 사용합니다. 모든 코드 아래로 잘 작동하지만 구문 분석 느린 - 여기에 전문가들에 의해 제안 내가 itextsharp (xmlworker) 구문 분석이 느립니다.
- 등록 글꼴로 이동
using (var ms = new MemoryStream()) { using (var doc = new Document(PageSize.A4, 0, 1, 0,0)) { using (var writer = PdfWriter.GetInstance(doc, ms)) { doc.Open(); XMLWorkerHelper.GetInstance().ParseXHtml(writer,doc, htmlcontent); //Above line is too slow doc.Close(); } }
파일
이제 아래 코드를 사용하지만 생성 된 PDF는 b입니다. 행크스. 그것은 스타일하지만 글꼴 및 도이 방식을 유지하지 나는 대기 시간에 걸쳐 필요
using (var ms = new MemoryStream())
{
using (var doc = new Document(PageSize.A4, 0, 1, 0,0))
{
using (var writer = PdfWriter.GetInstance(doc, ms))
{
doc.Open();
// css
var cssResolver = new StyleAttrCSSResolver();
var cssFile = XMLWorkerHelper.GetCSS((new FileStream(Server.MapPath("~/Content/scptpdf.css"), FileMode.Open, FileAccess.Read)));
cssResolver.AddCss(cssFile);
// html
var fontProvider = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS);
fontProvider.Register(Server.MapPath("~/Content/fonts/arial.ttf"));
fontProvider.Register(Server.MapPath("~/Content/fonts/arialbd."));
fontProvider.AddFontSubstitute("calibri","ARIAL");
var cssAppliers = new CssAppliersImpl(fontProvider);
var htmlContext = new HtmlPipelineContext(cssAppliers);
htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory());
var pdf = new PdfWriterPipeline(doc, writer);
var html = new HtmlPipeline(htmlContext, pdf);
var css = new CssResolverPipeline(cssResolver, html);
var worker = new XMLWorker(css,true);
var p = new XMLParser(worker);
byte[] byteArray = Encoding.UTF8.GetBytes(pdftext);
var htmlstream = new MemoryStream(byteArray);
p.Parse(htmlstream);
//XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, htmlcontent);
doc.Close();
}
}
을 구문 분석 같은 시간이 걸립니다. 이걸 좀 도와 줄 수 있니? 미리 감사드립니다.
HTML을 보지 않고도이 질문에 대해 의견을 말하기는 어렵습니다. 어쩌면 당신은 많은 중첩 된 요소를 가진 거대한 테이블을 가지고있을 것입니다. HTML이 없으면 코드를 변경할 때 PDF가 비어있는 이유를 찾는 것도 불가능합니다. 내 첫 번째 추측은 다음과 같습니다. 글꼴 문제가 있지만 추측에 불과합니다. –
2 년간 itextsharp를 사용해 왔습니다. 일을 끝내기 때문에 좋아했지만 100000 자 HTML 파일을 변환하려고 할 때도 똑같은 문제가있었습니다. iTextsharp는 받아 들일 수없는 ~ 10 분 안에 그것을 변환합니다. wkhtmltopdf를 사용하여 동일한 HTML 파일을 변환하려고 시도했는데 ~ 10 초 내에 파일을 변환 한 것에 놀랐습니다. iTextSharp는 훌륭한 도구이지만 관리 코드로 작성 되었기 때문에 성능이 느립니다. 한편, wkhtmltopdf는 전적으로 원어로 작성됩니다. 나는 지금까지 ASP.NET 프로젝트를위한 최고의 wkhtmltopdf 래퍼 인 TuesPechkin을 사용한다. – rajeemcariazo