java 导出pdf文件

来源:互联网 发布:学美工教程视频 编辑:程序博客网 时间:2024/05/24 06:58

转:http://blog.csdn.net/huweijun_2012/article/details/53240602

1,使用包如下:

itext-2.1.7.jar  

itextasian-1.5.2.jar

下载地址:http://pan.baidu.com/s/1bpqqA1T#list/path=%2F

2,代码如下:



  1. package com.junlenet.action;  
  2.   
  3. import java.awt.Color;  
  4. import java.io.ByteArrayOutputStream;  
  5. import java.io.IOException;  
  6. import java.util.ArrayList;  
  7. import java.util.HashMap;  
  8. import java.util.List;  
  9. import java.util.Map;  
  10.   
  11. import javax.servlet.ServletException;  
  12. import javax.servlet.ServletOutputStream;  
  13. import javax.servlet.annotation.WebServlet;  
  14. import javax.servlet.http.HttpServlet;  
  15. import javax.servlet.http.HttpServletRequest;  
  16. import javax.servlet.http.HttpServletResponse;  
  17.   
  18. import com.lowagie.text.Document;  
  19. import com.lowagie.text.Element;  
  20. import com.lowagie.text.Font;  
  21. import com.lowagie.text.HeaderFooter;  
  22. import com.lowagie.text.Image;  
  23. import com.lowagie.text.PageSize;  
  24. import com.lowagie.text.Paragraph;  
  25. import com.lowagie.text.Phrase;  
  26. import com.lowagie.text.pdf.BaseFont;  
  27. import com.lowagie.text.pdf.PdfPCell;  
  28. import com.lowagie.text.pdf.PdfPTable;  
  29. import com.lowagie.text.pdf.PdfWriter;  
  30.   
  31. /** 
  32.  * Servlet implementation class PdfAction 
  33.  */  
  34. @WebServlet(description = "PdfAction", urlPatterns = { "/PdfAction" })  
  35. public class PdfAction extends HttpServlet {  
  36.     private static final long serialVersionUID = 1L;  
  37.          
  38.     /** 
  39.      * @see HttpServlet#HttpServlet() 
  40.      */  
  41.     public PdfAction() {  
  42.         super();  
  43.         // TODO Auto-generated constructor stub  
  44.     }  
  45.   
  46.     /** 
  47.      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
  48.      */  
  49.     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  50.         doPost(request, response);  
  51.     }  
  52.   
  53.     /** 
  54.      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
  55.      */  
  56.     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  57.         try {  
  58.             BaseFont bfChinese = BaseFont.createFont("STSong-Light""UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);     
  59.             Font fontChinese10 = new Font(bfChinese, 10, Font.NORMAL);  
  60.             Font fontChinese12 = new Font(bfChinese, 12, Font.NORMAL);  
  61.             Font fontChinese14 = new Font(bfChinese, 14, Font.NORMAL);  
  62.             Paragraph emptyLine5 = new Paragraph(5," ");  
  63.             Paragraph emptyLine10 = new Paragraph(10," ");  
  64.               
  65.             Document document = new Document(PageSize.A4,40,40,30,30);  
  66.             ByteArrayOutputStream baos = new ByteArrayOutputStream();  
  67.             //PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filePathString));  
  68.             PdfWriter writer = PdfWriter.getInstance(document, baos);  
  69.             //设置页脚需要在open之前  
  70.             document.setFooter(createFooter(fontChinese10));  
  71.             document.setHeader(createHeader(fontChinese10));  
  72.             document.open();  
  73.             document.add(new Paragraph("君乐网",fontChinese14));  
  74.             document.add(createImg());  
  75.             document.newPage();  
  76.             document.add(new Paragraph("君乐网",fontChinese14));  
  77.             document.add(emptyLine10);  
  78.             document.add(createTab(fontChinese12));  
  79.             document.newPage();  
  80.             document.add(new Paragraph("君乐网",fontChinese14));  
  81.             document.newPage();  
  82.             document.close();  
  83.             response.setHeader("Content-disposition","attachment; filename=\""+new String("PDF文件".getBytes(), "ISO8859-1") +".pdf\"");    
  84.             response.setContentLength(baos.size());    
  85.             ServletOutputStream outputStream = response.getOutputStream();  
  86.             baos.writeTo(outputStream);    
  87.             outputStream.flush();    
  88.             outputStream.close();    
  89.         } catch (Exception e) {  
  90.             e.printStackTrace();  
  91.         }  
  92.     }  
  93.       
  94.     private PdfPTable createTab(Font fontChinese12){  
  95.         try {  
  96.             PdfPTable tab = new PdfPTable(5);//多少列  
  97.             tab.setTotalWidth(515); //固定宽度  
  98.             tab.setLockedWidth(true); //使用固定宽度时,必须锁定宽度  
  99.             tab.setWidths(new int[]{103,103,103,103,103}); //每列的宽度, 只针对固定宽度有效;如果表格使用百分比设置总宽度的话,那这里也就是使用百分比.  
  100.             //tab.setWidthPercentage(percen); 表格宽度设置为100%  
  101.             //tab.getDefaultCell().setBorder(0); 统一设置边框为0 ,但是如果单独添加了单元格,则无效.  
  102.             PdfPCell cell_id = new PdfPCell(new Paragraph("序号", fontChinese12));  
  103.             cell_id.setFixedHeight(20);//单元格高度  
  104.             //cell_id.setPaddingLeft(0);  
  105.             //cell_id.setColspan(2); //合并列  
  106.             //cell_id.setRowspan(2); //合并行  
  107.             //cell_id.setBorder(0);  //边框  
  108.             //cell_id.addElement(tab);  //表格嵌套   单元格里面可以再添加一个表格  
  109.             tab.addCell(cell_id);  
  110.               
  111.             PdfPCell cell_name = new PdfPCell(new Paragraph("名称", fontChinese12));  
  112.             tab.addCell(cell_name);  
  113.               
  114.             PdfPCell cell_age = new PdfPCell(new Paragraph("年龄", fontChinese12));  
  115.             tab.addCell(cell_age);  
  116.               
  117.             PdfPCell cell_email = new PdfPCell(new Paragraph("邮箱", fontChinese12));  
  118.             tab.addCell(cell_email);  
  119.               
  120.             PdfPCell cell_isok = new PdfPCell(new Paragraph("是否合格", fontChinese12));  
  121.             tab.addCell(cell_isok);  
  122.               
  123.             List<Map<String, String>> data = tabData();  
  124.             PdfPCell cell_temp =  null;  
  125.             for (Map<String, String> map : data) {  
  126.                 cell_temp = new PdfPCell(new Paragraph(map.get("id"), fontChinese12));  
  127.                 tab.addCell(cell_temp);  
  128.                 cell_temp = new PdfPCell(new Paragraph(map.get("name"), fontChinese12));  
  129.                 tab.addCell(cell_temp);  
  130.                 cell_temp = new PdfPCell(new Paragraph(map.get("age"), fontChinese12));  
  131.                 tab.addCell(cell_temp);  
  132.                 cell_temp = new PdfPCell(new Paragraph(map.get("email"), fontChinese12));  
  133.                 tab.addCell(cell_temp);  
  134.                 cell_temp = new PdfPCell(new Paragraph(map.get("isok"), fontChinese12));  
  135.                 tab.addCell(cell_temp);  
  136.             }  
  137.             return tab;  
  138.         } catch (Exception e) {  
  139.             e.printStackTrace();  
  140.             return null;  
  141.         }  
  142.     }  
  143.       
  144.     private List<Map<String, String>> tabData(){  
  145.         List<Map<String, String>> data = new ArrayList<Map<String,String>>();  
  146.         Map<String, String> item = null;  
  147.         for (int i = 0; i < 10; i++) {  
  148.             item = new HashMap<String, String>();  
  149.             item.put("id""1000"+i);  
  150.             item.put("name""HWJ_"+i);  
  151.             item.put("age"""+(20+i));  
  152.             item.put("email""2368890"+i+"79qq.com");  
  153.             item.put("isok", i%2==0?"合格":"不合格");  
  154.             data.add(item);  
  155.         }  
  156.           
  157.         return data;  
  158.     }  
  159.       
  160.     private Image createImg(){  
  161.         try {  
  162.             String url = "http://junlenet.com/uploads/allimg/160424/1-160424122217.jpg";  
  163.             Image image = Image.getInstance(url);  
  164.             image.scaleToFit(200,120);  
  165.             return image;  
  166.         } catch (Exception e) {  
  167.             return null;  
  168.         }  
  169.     }  
  170.       
  171.     private HeaderFooter createFooter(Font fontChinese10){  
  172.          String footStr1 = "\t\t君乐网\t www.j unl enet.com\t\t\t\t\t\t\t\t\t\t\t\t\t\t ";  
  173.          HeaderFooter footer=new HeaderFooter(new Phrase(footStr1,fontChinese10),new Phrase("/ 3\t\t",fontChinese10));    
  174.          footer.setAlignment(Element.ALIGN_RIGHT);    
  175.          footer.setBorderColorTop(new Color(0,0,0));  
  176.          footer.setBorderWidthTop(1);  
  177.          footer.setBorderWidthBottom(0);  
  178.          footer.setBorderWidthLeft(0);  
  179.          footer.setBorderWidthRight(0);  
  180.          return footer;  
  181.     }  
  182.       
  183.     private HeaderFooter createHeader(Font fontChinese10){  
  184.          String footStr1 = "www.j unl enet.com\t\tqq: 962884205 ";  
  185. //      HeaderFooter footer=new HeaderFooter(new Phrase(footStr1,fontChinese10),new Phrase("/ 3\t\t",fontChinese10));  
  186.         HeaderFooter footer=new HeaderFooter(new Phrase(footStr1,fontChinese10), false) ;  
  187.         footer.setAlignment(Element.ALIGN_LEFT);    
  188.         footer.setBorderWidthTop(0);  
  189.         footer.setBorderColorBottom(new Color(0,0,0));  
  190.         footer.setBorderWidthBottom(1);  
  191.         footer.setBorderWidthLeft(0);  
  192.         footer.setBorderWidthRight(0);  
  193.         return footer;  
  194.     }  
  195.       
  196.   
  197. }  

原创粉丝点击