java画pdf

    技术2025-09-18  163

    import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.FileReader;import java.util.ArrayList;

    import com.lowagie.text.Document;import com.lowagie.text.Element;import com.lowagie.text.Font;import com.lowagie.text.FontFactory;import com.lowagie.text.Paragraph;import com.lowagie.text.html.simpleparser.HTMLWorker;import com.lowagie.text.html.simpleparser.StyleSheet;import com.lowagie.text.pdf.BaseFont;import com.lowagie.text.pdf.PdfWriter;

     

    public class HtmlToPdf {   

     public static void main(String[] args) {HtmlToPdf ih = new HtmlToPdf();      try {    ih.htmlCodeComeFromFile("D://test.html", "D://1.pdf");    //ih.htmlCodeComeString("<table width='100%' border='0'> <tr> <td>供应商名称_________供应商编号_________ 采购____年度___________ </td><td><table width='20%' border='1'> <tr><td>1</td><td>2</td> <td>3</td> </tr> <tr><td>4</td><td>5</td><td>6</td></tr></table></td> </tr></table>", "D://2.pdf");  } catch (Exception e) {   // TODO Auto-generated catch block   e.printStackTrace();  }    }  /**  * 通过html文件生成pdf文件  * @param filePath  * @param pdfPath  * @throws Exception  */ public void htmlCodeComeFromFile(String filePath, String pdfPath) throws Exception {          File f=new File(filePath);        toPdf(f,pdfPath);    }     /**  * 通过html格式代码生成pdf  * 注意:默认会生成临时html文件,读取后会自动删除  * @param htmlCode  * @param pdfPath  * @throws Exception  */ public void htmlCodeComeString(String htmlCode, String pdfPath)  throws Exception{     String filename=System.currentTimeMillis()+Math.random()+".html";  File f=new File(filename);  BufferedOutputStream Buff = null; 

      FileOutputStream outSTr = null;     byte[] bs = htmlCode.getBytes();  outSTr = new FileOutputStream(f);     Buff = new BufferedOutputStream(outSTr);     long begin0 = System.currentTimeMillis();     Buff.write(bs);     Buff.flush();     Buff.close();      try {   toPdf(f,pdfPath);  }catch(Exception e){   throw e;  }finally {   if(f.isFile()){    f.delete();   }  }

     }

      private void toPdf(File file, String pdfPath) throws Exception{         Document document = new Document();          StyleSheet st = new StyleSheet();           st.loadTagStyle("td", "encoding", "Identity-H");      st.loadTagStyle("body", "encoding", "Identity-H");      st.loadTagStyle("body", "leading", "6,0");                   st.loadTagStyle("body", "leading", "6,0");           st.loadTagStyle("ol", "leading", "6.0");         st.loadTagStyle("li", "face", "SIMHEI");         st.loadTagStyle("span", "size", "6px");         st.loadStyle("sf", "color", "blue");         st.loadStyle("sf", "b", "");         st.loadStyle("classic", "color", "red");         st.loadStyle("classic", "i", "");         st.loadTagStyle("td", "face", "SIMHEI");         st.loadTagStyle("td", "leading", "18,0");         st.loadTagStyle("td", "size", "10px");         st.loadTagStyle("body", "face", "SIMHEI");         st.loadTagStyle("body", "encoding", "Identity-H");         st.loadTagStyle("body", "leading", "6,0");             /*                       BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);             Font font = new Font(bf, 10);             FontSelector selector = new FontSelector();             selector.addFont(FontFactory.getFont("STSong-Light", "UniGB-UCS2-H", false, 10));            */      FontFactory.registerDirectory(System.getenv("SystemRoot")+"//Fonts");         BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);            Font FontChinese = new Font(bfChinese, 12, Font.NORMAL);                       PdfWriter.getInstance(document, new FileOutputStream(pdfPath));           document.open();           FileReader r= new FileReader(file);                  ArrayList p = HTMLWorker.parseToList(r, st);           for(int k = 0; k < p.size(); ++k) {            Paragraph myPara = new Paragraph();          myPara.setFont(FontChinese);          myPara.add((Element)p.get(k));          document.add(myPara);           }           document.close();          r.close();     } 

     }

     

    最新回复(0)