参考:
1.html文件和html字符串转pdf 解决中文样式:https://blog.youkuaiyun.com/lzq199528/article/details/78933496
2.html字符串转pdf源码:https://blog.youkuaiyun.com/jsyhello/article/details/51913447
3.IText实现对PDF文档属性的基本设置:https://www.cnblogs.com/matrix-zhu/p/6305944.html
4.利用itext导出HTML到PDF,解决中文不显示和中文不换行的问题:https://blog.youkuaiyun.com/beaAcmen/article/details/78252921
5.方式五如下 【表格格式显示不出来(可能段落读取破坏了标签)】
System.out.println(pdfPath);
StyleSheet st = new StyleSheet();
st.loadTagStyle("body", "leading", "16,0");
// step 1
Document document = new Document(PageSize.A4);
// step 2
PdfWriter.getInstance(document, new FileOutputStream(pdfPath));
// step 3
document.open();
// step 4
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font FontChinese = new Font(bfChinese, 12, Font.NORMAL);
List<Element> p = HTMLWorker.parseToList(dome_2(htmlCode), st);
System.out.println("who is 0:"+p.get(0).getChunks().get(0));
for (Element aP : p) {
for (int m = 0; m < aP.getChunks().size(); m++) {
Paragraph pCode = new Paragraph(aP.getChunks().get(m).toString(), FontChinese);
document.add(pCode);
}
}
// step 5
document.close();
private static Reader dome_2(String htmlCode){
if(htmlCode != null && !htmlCode.trim().equals("")){
try{
InputStream tInputStringStream = new ByteArrayInputStream(htmlCode.getBytes());
InputStreamReader isr = new InputStreamReader(tInputStringStream,"utf-8");
return new BufferedReader(isr);
}catch(Exception e){
e.printStackTrace();
}
}
return null;
}
结论:
第1种方式奏效,一开始中文显示不出来(工具包找到了,却读不出中文)
解决:切记不要在子标签里加font-family
另一个平台引用出现中文显示不出来,记得要用body包起来