解决mac上 html转pdf中文消失问题
public void testpdf (String HTML,String file){
try {
File file1 = new File(file);
if (file1.exists()) file1.delete();
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));
document.open();
//加载字体
XMLWorkerFontProvider fontProvider = new XMLWorkerFontProvider() {
@Override
public Font getFont(String fontname, String encoding, boolean embedded, float size, int style, BaseColor color) {
log.debug("fontname:{},size:{},encoding:{},embedded:{},style:{},color:{}",fontname,size,encoding,embedded,style,color == null ? null : color.toString());
//你的字体文件的位置
//这里把所有字体都设置为宋体了,可以根据fontname的值设置字体
String yaHeiFontName ="/Users/wangluyao/jf/123/font/simsun.ttc";
//如果是ttc需要这一行,ttf不需要
yaHeiFontName += ",1";
com.lowagie.text.Font yaHeiFont;
Font font = null;
try {
font = new Font(com.itextpdf.text.pdf.BaseFont.createFont(yaHeiFontName, BaseFont.IDENTITY_H, BaseFont.EMBEDDED));
font.setStyle(style);
font.setColor(color);
if (size>0){
font.setSize(size);
}
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return font;
}
};
// fontProvider.addFontSubstitute("lowagie", "garamond");
// fontProvider.setUseUnicode(true);
// CssAppliers cssAppliers = new CssAppliersImpl(fontProvider);
// HtmlPipelineContext htmlContext = new HtmlPipelineContext(cssAppliers);
// htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());
// htmlContext.autoBookmark(false);
// XMLWorkerHelper.getInstance().getDefaultCssResolver(true);
// step 4
XMLWorkerHelper.getInstance().parseXHtml(writer, document,
new FileInputStream(HTML), Charset.forName("UTF-8"),fontProvider);
// step 5
document.close();
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}