Java 如何在使用ITEXT将HTML转换为pdf时将pdf字体更改为土耳其风格
我正在运行此代码块以将html页面转换为pdf文档。但我在“result.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");//
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是额外的信息。.请任何人帮助。。。