ITextSharp XMLWorker v5.5.13.0土耳其语字符问题

时间:2018-09-12 12:57:42

标签: itext

我使用了iTextSharp,所有土耳其语字符都消失了。 html内联css属性也适用于表元素,但不适用于div元素。

我尝试了许多编码转换示例代码,但未找到任何结果。

我的示例代码:

public static byte[] HtmlToPdfItextSharp(string HTMLCONTENTSTRING, List<string> cssFiles = null)
{
    using (var ms = new MemoryStream())
    {
        Document pdfDoc = new Document(PageSize.A4.Rotate(), 10, 10, 10, 10);

        BaseFont STF_Helvetica_Turkish = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, "CP1254", BaseFont.NOT_EMBEDDED);
        Font fontNormal = new Font(STF_Helvetica_Turkish, 12, Font.NORMAL, BaseColor.BLACK);


        string fontPath = Path.Combine(Path.Combine(Server.MapPath("~/App_Data/Pdf/arial.ttf")));
        XMLWorkerFontProvider fontProvider = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS);
        fontProvider.UseUnicode = true;
        fontProvider.Register(fontPath);
        CssAppliers ca = new CssAppliersImpl(fontProvider);

        var pdfWriter = PdfWriter.GetInstance(pdfDoc, ms);

        pdfDoc.Open();
        pdfWriter.DirectContent.SetFontAndSize(STF_Helvetica_Turkish, 12);
        pdfWriter.CloseStream = false;

        var htmlContext = new HtmlPipelineContext(null);

        htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory());

        ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false);
        cssFiles.ForEach(e => cssResolver.AddCssFile(e, true));

        var pp = new PdfWriterPipeline(pdfDoc, pdfWriter);
        IPipeline pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, pp));

        XMLWorker worker = new XMLWorker(pipeline, true);
        XMLParser parser = new XMLParser(worker);


        parser.Parse(new MemoryStream(Encoding.UTF8.GetBytes(HTMLCONTENTSTRING)));

        pdfDoc.Close();

        return ms.GetBuffer();
    }
}

0 个答案:

没有答案