2

目前我使用的是 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 内的元素中的每个块上,它不仅为空:({itextSharp.text.pdf.TrueTypeFontUnicode})

图片

在 5.5.7 版上,BaseFont 为空。

我只使用 Century Gothic 字体(在 html 中)(在 FontFactory 中注册)。

让它在新版本中工作缺少什么?

4

1 回答 1

4

我也有同样的问题,我的 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 中的缺失字符问题

问候, 维尼特帕特尔

于 2015-11-25T12:31:11.657 回答