Java 如何在使用ITEXT将HTML转换为pdf时将pdf字体更改为土耳其风格

Java 如何在使用ITEXT将HTML转换为pdf时将pdf字体更改为土耳其风格,java,html,pdf,itext,converter,Java,Html,Pdf,Itext,Converter,我正在运行此代码块以将html页面转换为pdf文档。但我在“result.pdf”上没有看到土耳其语字符。我的工作是: try { Rectangle pagesize = new Rectangle(800,1200); final Document document = new Document(pagesize); OutputStream os = new FileOutputStream("deneme.pdf");//

我正在运行此代码块以将html页面转换为pdf文档。但我在“result.pdf”上没有看到土耳其语字符。我的工作是:

        try {
        Rectangle pagesize = new Rectangle(800,1200);
        final Document document = new Document(pagesize);
        OutputStream os = new FileOutputStream("deneme.pdf");// ByteArrayOutputStream();
        PdfWriter writer = PdfWriter.getInstance(document,os); 
        document.open();
        HtmlCleaner cleaner = new HtmlCleaner(); 
        CleanerProperties props = cleaner.getProperties();
        TagNode rootNode = cleaner.clean("Source Html");  

        XmlSerializer serial = new PrettyXmlSerializer(props);
        String htmlClean =  serial.getAsString(rootNode);
        System.out.println(htmlClean);//Tidy Html

        CSSResolver cssResolver = XMLWorkerHelper.getInstance().getDefaultCssResolver(true);
      /*  
        XMLWorkerFontProvider fontProvider = new XMLWorkerFontProvider();
       // fontProvider.setUseUnicode(true);
        fontProvider.isRegistered("Helvetica");
        fontProvider.addFontSubstitute("Helvetica", "Arial");

        CssAppliers cssAppliers = new CssAppliersImpl(fontProvider);
        */
        // HTML
        HtmlPipelineContext htmlContext = new HtmlPipelineContext(null);
        htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());
        htmlContext.setImageProvider(new ImageProvider());

        PdfWriterPipeline pdf = new PdfWriterPipeline(document, writer);
        HtmlPipeline html = new HtmlPipeline(htmlContext, pdf);
        CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);
      /*  
        BaseFont courier = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED);
        Font font = new Font(courier, 12, Font.NORMAL);
        Chunk chunk = new Chunk("",font);
        document.add(chunk); 
        */


        // XML Worker
        XMLWorker worker = new XMLWorker(css, true);
        XMLParser p = new XMLParser(worker);
        p.parse(new ByteArrayInputStream(htmlClean.getBytes("utf-8")));

        document.close(); 

        } catch (Exception e) {
            e.printStackTrace();
        }
我在注释行中尝试了代码,但结果是相同的,错误的

我如何用土耳其语字符更改结果

当我尝试那个代码块时

            BaseFont freeSans = BaseFont.createFont("FreeSans.ttf","Cp1254", true);
        Font font = new Font(freeSans,12, Font.NORMAL);
        Chunk chunk = new Chunk("ŞşĞğİıÖö",font);
        document.add(chunk); 
我在“result.pdf”中看到了“ŞşĞĞİıÖö”


但是在解析之前如何编辑XmlParser???

几乎可以肯定,您的“土耳其语字符”在您使用的字体中不可用。请看链接,这意味着用“\u0106”等代码替换所有特殊字符。这只是OP犯的第二个错误。第三条:“假设Helvetica是一种知道如何绘制这些字形的字体”。3.解决方案工作成功,但如何编辑我自己的源代码,我还没有成功。我无法将html转换为pdf添加“段落”。我没有更改字体。我也尝试了tff文件和许多组合,但有任何更改。.当ıwrite Sys.out the my html时,打印,但是当xmlparser解析myHtml时,没有土耳其语字母。我使用Ibm是额外的信息。.请任何人帮助。。。