`
wuzijingaip
  • 浏览: 319117 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JAVA导出PDF实例

 
阅读更多

一、直接导出成PDF

 

Java代码 
  1. import java.io.FileNotFoundException;  
  2. import java.io.FileOutputStream;  
  3.   
  4. import com.itextpdf.text.Document;  
  5. import com.itextpdf.text.DocumentException;  
  6. import com.itextpdf.text.Paragraph;  
  7. import com.itextpdf.text.pdf.PdfWriter;  
  8.   
  9. public class ItextProduce {  
  10.   
  11.     public static void main(String[] args) {  
  12.         Document doc = null;  
  13.         try {  
  14.             doc = new Document();  
  15.             PdfWriter.getInstance(doc, new FileOutputStream("C:\\itext.pdf"));  
  16.             doc.open();  
  17.             doc.add(new Paragraph("Hello World"));  
  18.         } catch (FileNotFoundException e) {  
  19.             e.printStackTrace();  
  20.         } catch (DocumentException e) {  
  21.             e.printStackTrace();  
  22.         } finally {  
  23.             doc.close();  
  24.         }  
  25.     }  
  26.   
  27. }  

 

 

二、由Servlet导出PDF

 

Java代码 
  1. package com.lwf.eus.servlet;  
  2.   
  3. import java.io.ByteArrayOutputStream;  
  4. import java.io.IOException;  
  5.   
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.ServletOutputStream;  
  8. import javax.servlet.http.HttpServlet;  
  9. import javax.servlet.http.HttpServletRequest;  
  10. import javax.servlet.http.HttpServletResponse;  
  11.   
  12. import com.itextpdf.text.Document;  
  13. import com.itextpdf.text.DocumentException;  
  14. import com.itextpdf.text.Paragraph;  
  15. import com.itextpdf.text.pdf.PdfWriter;  
  16.   
  17. public class ListRocarsReportServlet extends HttpServlet {  
  18.     private static final long serialVersionUID = 1L;  
  19.   
  20.     public ListRocarsReportServlet() {  
  21.         super();  
  22.     }  
  23.   
  24.     protected void doGet(HttpServletRequest request,  
  25.             HttpServletResponse response) throws ServletException, IOException {  
  26.         this.doPost(request, response);  
  27.     }  
  28.   
  29.     protected void doPost(HttpServletRequest request,  
  30.             HttpServletResponse response) throws ServletException, IOException {  
  31.         Document doc = new Document();  
  32.         ByteArrayOutputStream ba = new ByteArrayOutputStream();  
  33.         try {  
  34.             PdfWriter writer = PdfWriter.getInstance(doc, ba);  
  35.             doc.open();  
  36.             doc.add(new Paragraph("Hello World"));  
  37.   
  38.         } catch (DocumentException e) {  
  39.             e.printStackTrace();  
  40.         }  
  41.         doc.close();  
  42.   
  43.         response.setContentType("application/pdf");  
  44.         response.setContentLength(ba.size());  
  45.         ServletOutputStream out = response.getOutputStream();  
  46.         ba.writeTo(out);  
  47.         out.flush();  
  48.     }  
  49.   
  50. }  

 

 

三、由JSP导出成PDF

 

Java代码 
  1. <%@ page language="java" contentType="text/html; charset=ISO-8859-1"  
  2.     pageEncoding="ISO-8859-1"%>  
  3. <%@ page  
  4.     import="java.io.ByteArrayOutputStream,  
  5.     com.itextpdf.text.Document,  
  6.     java.io.DataOutput,java.io.DataOutputStream,  
  7.     com.itextpdf.text.Paragraph,  
  8.     com.itextpdf.text.DocumentException,  
  9.     com.itextpdf.text.Document.*,  
  10.     com.itextpdf.text.pdf.*"%>  
  11.   
  12.   
  13.   
  14. <%  
  15.     response.setContentType("application/pdf");  
  16.     Document doc = new Document();  
  17.     ByteArrayOutputStream ba = new ByteArrayOutputStream();  
  18.   
  19.     PdfWriter writer = PdfWriter.getInstance(doc, ba);  
  20.     doc.open();  
  21.     doc.add(new Paragraph("Hello World"));  
  22.     doc.close();  
  23.   
  24.     DataOutput output = new DataOutputStream(response.getOutputStream());  
  25.     byte[] bytes = ba.toByteArray();  
  26.     response.setContentLength(bytes.length);  
  27.     for (int i = 0; i < bytes.length; i++) {  
  28.         output.writeByte(bytes[i]);  
  29.     }  
  30. %>  

 

Java代码 
  1. jsp导出时会报错:  
  2. org.apache.jasper.JasperException: java.lang.IllegalStateException: getOutputStream() has already been called for this response  
  3.     org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)  
  4.     org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:410)  
  5.     org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)  
  6.     org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)  
  7.     javax.servlet.http.HttpServlet.service(HttpServlet.java:717)  

 

   报错原因:

Java代码 
  1. JSP调用response.getWriter与response.getOutputStream()相冲突!  
  2. 解决办法:  
Java代码 
  1. 在使用完输出流后调用以下两行代码即可:  
  2. out.clear();  
  3. out = pageContext.pushBody();  

 

代码修改为:

Java代码 
  1. <%@ page language="java" contentType="text/html; charset=ISO-8859-1"  
  2.     pageEncoding="ISO-8859-1"%>  
  3. <%@ page  
  4.     import="java.io.ByteArrayOutputStream,  
  5.     com.itextpdf.text.Document,  
  6.     java.io.DataOutput,java.io.DataOutputStream,  
  7.     com.itextpdf.text.Paragraph,  
  8.     com.itextpdf.text.DocumentException,  
  9.     com.itextpdf.text.Document.*,  
  10.     com.itextpdf.text.pdf.*"%>  
  11.   
  12. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  13. <html>  
  14. <head>  
  15. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  16. <title>Insert title here</title>  
  17. </head>  
  18. <body>  
  19.   
  20. <%  
  21.     response.setContentType("application/pdf");  
  22.     Document doc = new Document();  
  23.     ByteArrayOutputStream ba = new ByteArrayOutputStream();  
  24.   
  25.     PdfWriter writer = PdfWriter.getInstance(doc, ba);  
  26.     doc.open();  
  27.     doc.add(new Paragraph("Hello World"));  
  28.     doc.close();  
  29.   
  30.     DataOutputStream output = new DataOutputStream(response.getOutputStream());  
  31.     byte[] bytes = ba.toByteArray();  
  32.     response.setContentLength(bytes.length);  
  33.     for (int i = 0; i < bytes.length; i++) {  
  34.         output.writeByte(bytes[i]);  
  35.     }  
  36.     output.flush();  
  37.       
  38.     //out --jsp   
  39.     out.clear();  
  40.     out = pageContext.pushBody();  
  41.   
  42. %>  
  43. </body>  
  44. </html>  

 

 

 
 
 
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics