itextsharp与xmlworker的5.5.3版本与5.5.7版本在最新版本中缺少抛光字符
本文关键字:版本 新版本 字符 抛光 xmlworker itextsharp 最新版 | 更新日期: 2023-09-27 18:22:11
目前,我使用的是5.5.3版本,它运行起来没有问题,但我试图更新到最新版本,但我对润色字符有问题(它们只是缺少)。我从rtf转换为html,从html转换为pdf,如下所示:
private ElementList htmlToElementList(string htmlText)
{
ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(true);
// HTML
HtmlPipelineContext htmlContext = new HtmlPipelineContext(null);
htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory());
htmlContext.AutoBookmark(false);
// Pipelines
ElementList elements = new ElementList();
ElementHandlerPipeline end = new ElementHandlerPipeline(elements, null);
HtmlPipeline html = new HtmlPipeline(htmlContext, end);
CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);
// XML Worker
XMLWorker worker = new XMLWorker(css, true);
XMLParser p = new XMLParser(worker);
p.Parse(new StringReader(htmlText));
return elements;
}
它的工作方式与第5.5.3节的工作方式相同。我试图进行调查,发现它们之间有一个区别(5.5.3与5.5.7):在字体内部元素中的每个块上,BaseFont不仅仅为null:({itextSharp.text.pdf。TrueTypeFontUnicode})
图像
在版本5.5.7上,BaseFont为null。
我只使用世纪哥特式字体(html)(在FontFactory注册)。
让它在新版本中工作缺少什么?
我也有同样的问题,我的PDF中缺少土耳其字符。我已经通过这个解决了。
String htmlText = html.ToString();
Document document = new Document();
string filePath = HostingEnvironment.MapPath("~/Content/Pdf/");
PdfWriter.GetInstance(document, new FileStream(filePath + "''pdf-"+Name+".pdf", FileMode.Create));
document.Open();
iTextSharp.text.html.simpleparser.HTMLWorker hw = new iTextSharp.text.html.simpleparser.HTMLWorker(document);
FontFactory.Register(Path.Combine(_webHelper.MapPath("~/App_Data/Pdf/arial.ttf")), "Garamond"); // just give a path of arial.ttf
StyleSheet css = new StyleSheet();
css.LoadTagStyle("body", "face", "Garamond");
css.LoadTagStyle("body", "encoding", "Identity-H");
css.LoadTagStyle("body", "size", "12pt");
hw.SetStyleSheet(css);
hw.Parse(new StringReader(htmlText));
请使用Itext 在PDF中查看此处缺少字符问题
谨致问候,Vinit patel