您的位置:首页 > Web前端 > HTML

pd4ml实现HTML转化PDF

2017-07-05 09:53 441 查看
由于公司需求要把网页转化成PDF,由于自己不太会这个,于是就百度了好多资料,也试过好多方法,但是这么多方法试下来还是觉得pd4ml更好用,因为他对HTML代码的要求比起其他来说要宽松的多,但是他还是要写出内联样式才行,用pd4ml实现起来很简单,只要引入pd4ml_demo.jar和ss_css2.jar以及一个字体架包就可以了,当然也可以用电脑自带的,准备好这些东西后在字体所在的文件夹中新建一个叫pd4fonts.properties的文件,内容如下#this is an autogenerated file.
please remove manually any references to copyrighted fonts#Thu Jul 19 09:14:07 CST 2012Arial=arial.ttfArial\ Black=ariblk.ttfArial\ Bold=arialbd.ttfArial\ Bold\ Italic=arialbi.ttfArial\ Italic=ariali.ttfCordia\ New=cordia.ttfCordia\ New\ Bold=cordiab.ttfCordia\
New\ Bold\ Italic=cordiaz.ttfCordia\ New\ Italic=cordiai.ttfCourier\ New=cour.ttfCourier\ New\ Bold=courbd.ttfCourier\ New\ Bold\ Italic=courbi.ttfCourier\ New\ Italic=couri.ttfKaiTi=simkai.ttfSimHei=simhei.ttfSimSun=simsun.ttc_0YouYuan=SIMYOU.TTFfont.dir.location=../fonts/配置好后就是写Java代码了,以下是Java代码:import
java.awt.Insets; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.io.StringReader; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import org.xhtmlrenderer.pdf.ITextFontResolver;
import org.xhtmlrenderer.pdf.ITextRenderer; import org.zefer.pd4ml.PD4Constants; import org.zefer.pd4ml.PD4ML; import com.lowagie.text.DocumentException; import com.lowagie.text.pdf.BaseFont; public class PdfUtil { // 手动构造HTML代码 public static void generatePDF_1(File
outputPDFFile, StringReader strReader) throws Exception { String founturl = ResourceUtils.getString("config", "pdf.fount.url"); FileOutputStream fos = new FileOutputStream(outputPDFFile); PD4ML pd4ml = new PD4ML(); pd4ml.setPageInsets(new Insets(10, 15, 10,
13)); //设置PDF的topValue,leftValue,rightValue,bottomValue pd4ml.setHtmlWidth(1240); // 设置生成PDF的HTML的宽度 //pd4ml.setPageSize(pd4ml.changePageOrientation(PD4Constants.A4)); //设置生成PDF的尺寸 (横打) pd4ml.setPageSize(PD4Constants.A4); //设置生成PDF的尺寸 (纵打) //pd4ml.useTTF("java:main/java/com/thinkgem/jeesite/modules/dot/fonts",
true); pd4ml.useTTF(founturl, true); //设置PDF的字体路径(绝对路径和相对都行,这里用绝对路径) pd4ml.setDefaultTTFs("Arial", "Arial", "Arial"); //设置字体 pd4ml.enableDebugInfo(); //开启转换调试信息 pd4ml.render(strReader, fos); } public static void main(String[] args) throws Exception { //String
outputFile = "E:/demo_3.pdf"; File pdfFile = new File("E:/demo_3.pdf"); StringBuffer html = new StringBuffer(); html.append("<html>") .append("<head>") .append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />") .append("</head>")
.append("<body>") .append("<font size=22>显示中文DSDSDS</font>") .append("</body></html>"); StringReader strReader = new StringReader(html.toString()); PdfUtil.generatePDF_1(pdfFile, strReader); }以上代码亲测可用,这个还有个弊端就是无法转化图表,可能是自己技术有限,如果哪位大神实现了可以告诉我一下
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: