IText 自html tag 转为 pdf 用java 实现,实例完整。拿出来共享,谢谢。
这东西搞得我头都大了,望各位高手指点。
说明:
(这个类运行环境 myeclipse6.6 jdk1.5 windows7)
需要jar包:(三个)
itextpdf-5.1.2.jar
bcprov-jdk15-146.jar
iTextAsian.jar
使用和生成的 pdf html 去 本人的资源列表下载
存在问题:生成的pdf 里面的table 只有border 没有内容,请教各位高手。(还有html格式转换为pdf后 不够细腻)
下面两个链接是我上传到csdn资源的链接附件。
待转换的html
http://download.csdn.net/detail/qq540061627/3594776
生成的pdf
http://download.csdn.net/detail/qq540061627/3594774
import java.io.BufferedReader;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.StringReader;import java.util.List;import com.itextpdf.text.Document;import com.itextpdf.text.DocumentException;import com.itextpdf.text.Element;import com.itextpdf.text.Font;import com.itextpdf.text.PageSize;import com.itextpdf.text.Paragraph;import com.itextpdf.text.html.simpleparser.HTMLWorker;import com.itextpdf.text.html.simpleparser.StyleSheet;import com.itextpdf.text.pdf.BaseFont;import com.itextpdf.text.pdf.PdfWriter;public class testPDF {public static String path = System.getProperty("user.dir") + "/WebRoot/";public static String outputFile = path + "fistdoc.pdf";public static String outputFile2 = path + "fistdoc2.pdf";public void test() throws DocumentException, IOException {//-----加载 html 流 开始BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path + "hetong2.html")));String data=null;StringBuffer b = new StringBuffer();while ((data = br.readLine()) != null) {System.out.println(data);b.append(data);}br.close();//----- 加载 html 流 结束//-----输出 pdf 流 开始OutputStream os = new FileOutputStream(outputFile2);//-----输出 pdf 流 结束Document doc = new Document();//-----中文过滤 开始BaseFont baseFontChinese = BaseFont.createFont("STSong-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);Font fontChinese = new Font(baseFontChinese, 12, Font.NORMAL);//-----中文过滤 结束//-----创建监听器PdfWriter writer = PdfWriter.getInstance(doc, os);//-----加权限 开始writer.setPdfVersion(writer.PDF_VERSION_1_7);int perssion = writer.ALLOW_PRINTING | writer.HideMenubar| writer.HideToolbar | writer.HideWindowUI| writer.ALLOW_FILL_IN;writer.setEncryption(null, null, perssion,writer.STANDARD_ENCRYPTION_40);//-----加权限 结束//----- html 流 加入document 开始Paragraph context = new Paragraph();StyleSheet ss = new StyleSheet();List htmlList = HTMLWorker.parseToList(new StringReader(b.toString()),ss);for (int i = 0; i < htmlList.size(); i++) {Element e = (Element) htmlList.get(i);context.setFont(fontChinese);context.add(e);}//----- html 流 加入document 结束//----- 打开documentdoc.open();//加入html 流 动作doc.add(context);//----- 关闭documentdoc.close();}public static void main(String[] args) throws DocumentException,IOException {testPDF f = new testPDF();f.test();}}