java使⽤xmlWorkerHelper将html转pdf
1、引⼊maven包
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.12</version>
</dependency>
<dependency>
<groupId>l</groupId>
<artifactId>xmlworker</artifactId>
<version>5.5.8</version>
</dependency>
2、编码⽰例:
import java.io.ByteArrayInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.nio.charset.Charset;
import Document;
import PageSize;
import pdf.PdfWriter;
import l.xml.XMLWorkerHelper;
public class XmlWorkerHelperUtil{
public static void htmlToPDF(String htmlString,String pdfPath) {
try {
Document document = new Document(PageSize.A4);
PdfWriter pdfWriter = Instance(document,new FileOutputStream(pdfPath));
document.open();
document.addAuthor("pdf作者");
document.addCreator("pdf创建者");
document.addSubject("pdf主题");
document.addCreationDate();
document.addTitle("pdf标题,可在html中指定title");
XMLWorkerHelper worker = Instance();
InputStream inputStream=null;
worker.parseXHtml(pdfWriter, document, new Bytes("UTF-8")),inputStream,Charset.forName("UTF-8"),new AsianFon document.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
import Font;
import l.xml.XMLWorkerFontProvider;
java修改html文件public class AsianFontProvider extends XMLWorkerFontProvider {
@Override
public Font getFont(final String fontname, String encoding, float size, final int style) {
String fntname = fontname;
if (fntname == null) {
/*使⽤的windows⾥的宋体,可将其⽂件放资源⽂件中引⼊
*请确保字体在windows下⽀持
*我是将字体打进maven的jar包中使⽤
*/
fntname = "";
}
if (size == 0) {
size = 4;
}
Font(fntname, encoding, size, style);
}
}
3、字体乱码问题:
html字符串指定utf-8字体,指定body标签样式为SimSun,若内容有设定字体样式的也⼀并修改为SimSun。
<head>
<title>XXX合同</title>
<meta charset="UTF-8"/>
<meta http-equiv="Content-Type" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache"/>
<meta http-equiv="Expires" content="0"/>
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"/>
<style>
body{font-family:SimSun}
</style>
</head>
4、针对SimSun的说明
字体,为宋体。这是存放于maven的jar中的资源⽂件。
两种⽅式可以保证其在linux服务器上正常运⾏。
1、将⽂件作为maven组件资源⽩名单⽂件打成jar包(我⽬前使⽤的这种)
2、将⽂件⽤root⽤户上传⾄linux服务器上,⼤概是/usr/share/font⽬录下。
fc-cache 刷新字体缓存
fc-list 查看字体列表
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论