从word获取的html有一些无用标签、样式,可以看
这篇文章。
实战:
在项目中我去掉了这些无用标签,由于我获取的是html字符串,这里使用jsoup处理的html字符串。
要注意了:要再你的html <body> 加上一个样式:
style = "font-family: SimSun;"。(从别的文章中看到的)这样中文才可以在pdf中显示。
生成pdf代码:
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.9</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>flying-saucer-pdf-itext5</artifactId>
<version>9.0.3</version>
</dependency>
String url = new File("src/test/sss.html").toURI().toURL().toString();
System.out.println(url);
try {
OutputStream os = new FileOutputStream("output.pdf");
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(url);
// step 3 解决中文支持
ITextFontResolver fontResolver = renderer.getFontResolver();
fontResolver.addFont("D:\\data\\gather\\font\\simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
renderer.layout();
renderer.createPDF(os);
os.close();
System.out.println("create pdf done!!");
} catch (DocumentException e) {
e.printStackTrace();
}