java生成pdf需要用到的包pd4ml.jar
下载地址:http://download.csdn.net/detail/yanning1314/7124741
package com.cular.util; import java.awt.Dimension; import java.awt.Insets; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.net.URL; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.zefer.pd4ml.PD4ML; import org.zefer.pd4ml.PD4PageMark; public class PDFConverter { // public byte[] generatePDF(InputStreamReader isr, String pdfFilename, String baseurl){ // //FileOutputStream fos = null; // byte[] res = null; // ByteArrayOutputStream baos = null; // try{ // //fos = new FileOutputStream(new File(pdfFilename)); // baos = new ByteArrayOutputStream(); // PD4ML pd4ml = new PD4ML(); // pd4ml.setPageInsets(new Insets(10, 10, 10, 10)); // pd4ml.setHtmlWidth(1000); // pd4ml.enableImgSplit(false); // //Dimension format = PD4ML.A4; // //pd4ml.setPageSize(pd4ml.changePageOrientation(format)); // landscape page orientation // pd4ml.useTTF("java:fonts", true ); // //pd4ml.enableDebugInfo(); // // // footer if needed // //PD4PageMark footer = new PD4PageMark(); // //footer.setPageNumberTemplate("page $[page] of $[total]"); // //footer.setPageNumberAlignment(PD4PageMark.RIGHT_ALIGN); // //footer.setInitialPageNumber(1); // //footer.setPagesToSkip(1); // //footer.setFontSize(10); // //footer.setAreaHeight(18); // //pd4ml.setPageFooter(footer); // // // pd4ml.render(isr, baos, new URL(baseurl)); // // res = baos.toByteArray(); // }catch(Exception e){ // e.printStackTrace(); // //try{fos.close();fos=null;}catch(Exception ee){} // //fos=null; // try{baos.close();baos=null;}catch(Exception ee){} // baos=null; // }finally{ // //try{fos.close();fos=null;}catch(Exception ee){} // try{baos.close();baos=null;}catch(Exception ee){} // } // // return res; // } public static void main(String[] args) { PDFConverter pdf = new PDFConverter(); pdf.processFile("d://123/", "123.pdf", "http://localhost:8080/CULAR/", "test.jsp"); } /** * * @param folder 生成pdf后放在哪个目录 * @param filename pdf的名称 * @param baseurl 要生成pdf的url * @param jspString 要把哪个生成pdf * @return */ public boolean processFile(String folder, String filename,String baseurl,String jspString){ boolean res = false; InputStreamReader isr = null; try{ File f = new File(folder); if (f.isDirectory()) { f.mkdir(); } String fullfilename = folder + filename; HttpClient client = new DefaultHttpClient(); HttpGet h_request = new HttpGet(baseurl + jspString); HttpResponse h_response = client.execute(h_request); isr = new InputStreamReader(h_response.getEntity().getContent(), "UTF-8"); PDFConverter converter = new PDFConverter(); //String localpath = getServletContext().getInitParameter("pdfDir") + admin.getUserid() + "/" + lessonid + ".pdf"; //String downloadUrl = getServletContext().getInitParameter("pdfUrl") + admin.getUserid() + "/" + lessonid + ".pdf"; res = converter.generatePDF(isr, fullfilename, baseurl); }catch(Exception e){ e.printStackTrace(); }finally{ try{isr.close();isr=null;}catch(Exception e){} } return res; } /** * 生成pdf * @param isr * @param pdfFilename * @param baseurl * @return */ public boolean generatePDF(InputStreamReader isr, String pdfFilename, String baseurl){ FileOutputStream fos = null; boolean res = false; try{ fos = new FileOutputStream(new File(pdfFilename)); PD4ML pd4ml = new PD4ML(); pd4ml.setPageInsets(new Insets(10, 10, 10, 10)); pd4ml.setHtmlWidth(1000); pd4ml.enableImgSplit(false); //Dimension format = PD4ML.A4; //pd4ml.setPageSize(pd4ml.changePageOrientation(format)); // landscape page orientation pd4ml.useTTF("java:fonts", true ); //pd4ml.enableDebugInfo(); // footer if needed //PD4PageMark footer = new PD4PageMark(); //footer.setPageNumberTemplate("page $[page] of $[total]"); //footer.setPageNumberAlignment(PD4PageMark.RIGHT_ALIGN); //footer.setInitialPageNumber(1); //footer.setPagesToSkip(1); //footer.setFontSize(10); //footer.setAreaHeight(18); //pd4ml.setPageFooter(footer); pd4ml.render(isr, fos, new URL(baseurl)); res = true; //res = baos.toByteArray(); }catch(Exception e){ e.printStackTrace(); }finally{ try{fos.close();fos=null;}catch(Exception ee){} } return res; } }