对html文件格式要求比较严格,请遵循以下格式:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style mce_bogus="1" type="text/css">
body {font-family: SimSun; background:none;margin-left: auto;margin-right: auto;}
</style>
</head>
<body>
</body>
</html>
注:
为了解决中文问题,请在body中加入样式 font-family: SimSun; 同时,对应JAVA代码中文处理类如下:
/**
*
* @ClassName: Html2Pdf
* @Description: Html文件转换为(这里用一句话描述这个类的作用)
* @author lxz
* @date 2016-4-18 下午4:08:41
*
*/
public class Html2PdfUtil {
public synchronized static boolean html2Pdf(String inputFile, String outputFile) {
OutputStream os = null;
File htmlFile = new File(inputFile);
try {
os = new FileOutputStream(outputFile);
ITextRenderer renderer = new ITextRenderer();
String url = null;
try {
url = htmlFile.toURI().toURL().toString();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
renderer.setDocument(url);
// 解决中文支持问题
ITextFontResolver fontResolver = renderer.getFontResolver();
try {
fontResolver.addFont("c://windows//fonts//simsun.ttc,1",BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 解决图片的相对路径问题
renderer.getSharedContext().setBaseURL("file:/" + basePath + "/print");
renderer.layout();
try {
renderer.createPDF(os);
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
os.flush();
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//删除原html文件
htmlFile.delete();
return true;
}
}
其中 " c://windows//fonts//simsun.ttc,1" 使用Windows系统字体,和html页面中font-family: SimSun; 对应。