C#学习教程:CSS样式未通过iTextSharp应用于PDF应用任何css样式。我试过一次应用一种样式,但这似乎不起作用。这是我到目前为停止所提的://获取要转换的页面部分。StringBuildersb=newStringBuilder();print_div.RenderControl(newHtmlTextWriter(newStringWriter(sb)));字符串html=sb.ToString();//生成一个随机文件名以用于pdfGuidrandom_guid;random_guid=Guid.NewGuid();字符串文件名=random_guid.ToString()+".pdf";stringfilename_with_folder=@"pdfsl_"+文件名;字符串fullFilePath=System.IO.Path.Combine(Request.PhysicalApplicationPath,filename_with_folder);using(Documentdoc=newDocument()){//创建pdfPdfWriterwriter=PdfWriter.GetInstance(doc,newFileStream(fullFilePath,FileMode.Create));文档.Open();try{//设置所有元素的字体大小StyleSheetstyles=newStyleSheet();styles.LoadStyle("body","fontsize","8px");//将内容写入pdf文档StringReadersr=newStringReader(html);XMLWorkerHelper.GetInstance().ParseXHtml(writer,doc,sr);}catch(Exceptionex){}doc.Close();我错过了什么吗?我开始使用HTMLWorker并已切换到XMLWorker,但我想我现在只是让自己感到困惑帮助将不胜感激。ATTEMP#2感谢您的回复!这是我想出的,但它不起作用。我的内容现在根本没有出现在pdf中,我不知道为什么。有任何想法吗?使用(Documentdoc=newDocument()){PdfWriterwriter=PdfWriter.GetInstance(doc,newFileStream(fullFilePath,FileMode.Create));文档.Open();//CSSvarcssResolver=newStyleAttrCSSResolver();varcssFile=XMLWorkerHelper.GetCSS(newFileStream(HttpContext.Current.Server.MapPath("~/css/print.css"),FileMode.Open));cssResolver.AddCss(cssFile);//HTMLCssAppliersca=newCssAppliersImpl()CCssResolverPipeline(cssResolver,htmlPipe);XMLWorkerworker=newXMLWorker(css,true);XMLParserp=newXMLParser(worker);StringReadersr=newStringReader(html);p.Parse(sr);文档.Close();我接近了,还是我完全错过了重点?为了使用带有样式表的XmlWorker创建PDF文件,您可以尝试返回字节数组的示例代码。byte[]bytesArray=null;使用(varms=newMemoryStream()){使用(vardocument=newDocument()){使用(PdfWriterwriter=PdfWriter.GetInstance(document,ms)){document.Open();using(varstrReader=newStringReader(html)){//设置工厂HtmlPipelineContexthtmlContext=newHtmlPipelineContext(null);htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory());//设置CSSICSSResolvercssResolver=XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false);cssResolver.AddCssFile(System.Web.HttpContext.Current.Server.MapPath("~/Content/bootstrap.min.css"),true);//导出IPipelinepipeline=newCssResolverPipeline(cssResolver,newHtmlPipeline(htmlContext,newPdfWriterPipeline(document,writer)));varworker=newXMLWorker(pipeline,true);varxmlParse=newXMLParser(true,worker);xmlParse.Parse(strReader);xmlParse.Flush();}文档.Close();}}bytesArray=ms.ToArray();}返回字节数组;您可以使用CSSResolver创建XmlWorkervarcssResolver=newStyleAttrCSSResolver();//更改CSS文件的路径varcssFile=XMLWorkerHelper.GetCSS(newFileStream(HttpContext.Current.Server.MapPath("~/pdf.css"),FileMode.Open));cssResolver.AddCss(cssFile);然后创建您的HtmlPipeline并将其传递给CssResolverPipeline构造函数:CssResolverPipelinecss=newCssResolverPipeline(cssResolver,html);XMLWorkerworker=newXMLWorker(css,true);XMLParserp=newXMLParser(worker);使用(TextReadersr=newStringReader(html)){p.Parse(sr);文档.Close();}//关闭你的作者pdfwriter.Close();不确定你是否设法解决了这个问题,但我在“制作pdf时无法让CSS在iTextSharp(5.4.3)中工作”这个问题中遇到了同样的CSS样式问题,基本上我发现了一些部分应用了样式表的一部分(例如边框周围的表格单元格)但没有应用其余部分(字体颜色,任何大小不在PX中)以上是C#学习教程:CSS样式未应用于通过iTextSharp共享的PDF的全部内容,如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注—本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
