您的位置:首页 > 编程语言 > Java开发

java 导出pdf文件

2017-07-26 10:30 330 查看
转: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,代码如下:

package com.junlenet.action;  

  

import java.awt.Color;  

import java.io.ByteArrayOutputStream;  

import java.io.IOException;  

import java.util.ArrayList;  

import java.util.HashMap;  

import java.util.List;  

import java.util.Map;  

  

import javax.servlet.ServletException;  

import javax.servlet.ServletOutputStream;  

import javax.servlet.annotation.WebServlet;  

import javax.servlet.http.HttpServlet;  

import javax.servlet.http.HttpServletRequest;  

import javax.servlet.http.HttpServletResponse;  

  

import com.lowagie.text.Document;  

import com.lowagie.text.Element;  

import com.lowagie.text.Font;  

import com.lowagie.text.HeaderFooter;  

import com.lowagie.text.Image;  

import com.lowagie.text.PageSize;  

import com.lowagie.text.Paragraph;  

import com.lowagie.text.Phrase;  

import com.lowagie.text.pdf.BaseFont;  

import com.lowagie.text.pdf.PdfPCell;  

import com.lowagie.text.pdf.PdfPTable;  

import com.lowagie.text.pdf.PdfWriter;  

  

/** 

 * Servlet implementation class PdfAction 

 */  

@WebServlet(description = "PdfAction", urlPatterns = { "/PdfAction" })  

public class PdfAction extends HttpServlet {  

    private static final long serialVersionUID = 1L;  

         

    /** 

     * @see HttpServlet#HttpServlet() 

     */  

    public PdfAction() {  

        super();  

        // TODO Auto-generated constructor stub  

    }  

  

    /** 

     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 

     */  

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  

        doPost(request, response);  

    }  

  

    /** 

     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 

     */  

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  

        try {  

            BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);     

            Font fontChinese10 = new Font(bfChinese, 10, Font.NORMAL);  

            Font fontChinese12 = new Font(bfChinese, 12, Font.NORMAL);  

            Font fontChinese14 = new Font(bfChinese, 14, Font.NORMAL);  

            Paragraph emptyLine5 = new Paragraph(5," ");  

            Paragraph emptyLine10 = new Paragraph(10," ");  

              

            Document document = new Document(PageSize.A4,40,40,30,30);  

            ByteArrayOutputStream baos = new ByteArrayOutputStream();  

            //PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filePathString));  

            PdfWriter writer = PdfWriter.getInstance(document, baos);  

            //设置页脚需要在open之前  

            document.setFooter(createFooter(fontChinese10));  

            document.setHeader(createHeader(fontChinese10));  

            document.open();  

            document.add(new Paragraph("君乐网",fontChinese14));  

            document.add(createImg());  

            document.newPage();  

            document.add(new Paragraph("君乐网",fontChinese14));  

            document.add(emptyLine10);  

            document.add(createTab(fontChinese12));  

            document.newPage();  

            document.add(new Paragraph("君乐网",fontChinese14));  

            document.newPage();  

            document.close();  

            response.setHeader("Content-disposition","attachment; filename=\""+new String("PDF文件".getBytes(), "ISO8859-1") +".pdf\"");    

            response.setContentLength(baos.size());    

            ServletOutputStream outputStream = response.getOutputStream();  

            baos.writeTo(outputStream);    

            outputStream.flush();    

            outputStream.close();    

        } catch (Exception e) {  

            e.printStackTrace();  

        }  

    }  

      

    private PdfPTable createTab(Font fontChinese12){  

        try {  

            PdfPTable tab = new PdfPTable(5);//多少列  

            tab.setTotalWidth(515); //固定宽度  

            tab.setLockedWidth(true); //使用固定宽度时,必须锁定宽度  

            tab.setWidths(new int[]{103,103,103,103,103}); //每列的宽度, 只针对固定宽度有效;如果表格使用百分比设置总宽度的话,那这里也就是使用百分比.  

            //tab.setWidthPercentage(percen); 表格宽度设置为100%  

            //tab.getDefaultCell().setBorder(0); 统一设置边框为0 ,但是如果单独添加了单元格,则无效.  

            PdfPCell cell_id = new PdfPCell(new Paragraph("序号", fontChinese12));  

            cell_id.setFixedHeight(20);//单元格高度  

            //cell_id.setPaddingLeft(0);  

            //cell_id.setColspan(2); //合并列  

            //cell_id.setRowspan(2); //合并行  

            //cell_id.setBorder(0);  //边框  

            //cell_id.addElement(tab);  //表格嵌套   单元格里面可以再添加一个表格  

            tab.addCell(cell_id);  

              

            PdfPCell cell_name = new PdfPCell(new Paragraph("名称", fontChinese12));  

            tab.addCell(cell_name);  

              

            PdfPCell cell_age = new PdfPCell(new Paragraph("年龄", fontChinese12));  

            tab.addCell(cell_age);  

              

            PdfPCell cell_email = new PdfPCell(new Paragraph("邮箱", fontChinese12));  

            tab.addCell(cell_email);  

              

            PdfPCell cell_isok = new PdfPCell(new Paragraph("是否合格", fontChinese12));  

            tab.addCell(cell_isok);  

              

            List<Map<String, String>> data = tabData();  

            PdfPCell cell_temp =  null;  

            for (Map<String, String> map : data) {  

                cell_temp = new PdfPCell(new Paragraph(map.get("id"), fontChinese12));  

                tab.addCell(cell_temp);  

                cell_temp = new PdfPCell(new Paragraph(map.get("name"), fontChinese12));  

                tab.addCell(cell_temp);  

                cell_temp = new PdfPCell(new Paragraph(map.get("age"), fontChinese12));  

                tab.addCell(cell_temp);  

                cell_temp = new PdfPCell(new Paragraph(map.get("email"), fontChinese12));  

                tab.addCell(cell_temp);  

                cell_temp = new PdfPCell(new Paragraph(map.get("isok"), fontChinese12));  

                tab.addCell(cell_temp);  

            }  

            return tab;  

        } catch (Exception e) {  

            e.printStackTrace();  

            return null;  

        }  

    }  

      

    private List<Map<String, String>> tabData(){  

        List<Map<String, String>> data = new ArrayList<Map<String,String>>();  

        Map<String, String> item = null;  

        for (int i = 0; i < 10; i++) {  

            item = new HashMap<String, String>();  

            item.put("id", "1000"+i);  

            item.put("name", "HWJ_"+i);  

            item.put("age", ""+(20+i));  

            item.put("email", "2368890"+i+"79qq.com");  

            item.put("isok", i%2==0?"合格":"不合格");  

            data.add(item);  

        }  

          

        return data;  

    }  

      

    private Image createImg(){  

        try {  

            String url = "http://junlenet.com/uploads/allimg/160424/1-160424122217.jpg";  

            Image image = Image.getInstance(url);  

            image.scaleToFit(200,120);  

            return image;  

        } catch (Exception e) {  

            return null;  

        }  

    }  

      

    private HeaderFooter createFooter(Font fontChinese10){  

         String footStr1 = "\t\t君乐网\t www.j unl enet.com\t\t\t\t\t\t\t\t\t\t\t\t\t\t ";  

         HeaderFooter footer=new HeaderFooter(new Phrase(footStr1,fontChinese10),new Phrase("/ 3\t\t",fontChinese10));    

         footer.setAlignment(Element.ALIGN_RIGHT);    

         footer.setBorderColorTop(new Color(0,0,0));  

         footer.setBorderWidthTop(1);  

         footer.setBorderWidthBottom(0);  

         footer.setBorderWidthLeft(0);  

         footer.setBorderWidthRight(0);  

         return footer;  

    }  

      

    private HeaderFooter createHeader(Font fontChinese10){  

         String footStr1 = "www.j unl enet.com\t\tqq: 962884205 ";  

//      HeaderFooter footer=new HeaderFooter(new Phrase(footStr1,fontChinese10),new Phrase("/ 3\t\t",fontChinese10));  

        HeaderFooter footer=new HeaderFooter(new Phrase(footStr1,fontChinese10), false) ;  

        footer.setAlignment(Element.ALIGN_LEFT);    

        footer.setBorderWidthTop(0);  

        footer.setBorderColorBottom(new Color(0,0,0));  

        footer.setBorderWidthBottom(1);  

        footer.setBorderWidthLeft(0);  

        footer.setBorderWidthRight(0);  

        return footer;  

    }  

      

  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gps java pdf javascript