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,代码如下:
- 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;
- }
- }
阅读全文
1 0
- JAVA 导出PDF文件
- java PDF文件导出
- java导出PDF文件
- Java导出PDF文件
- java 导出pdf文件
- jsf中用java导出pdf文件
- Java导出PDF文件的实现
- java导出PDF文件的实例
- java导出pdf文件工具类
- java导出pdf文件横向显示
- Java中导出pdf文件,pdf工具类demo
- 数据导出PDF文件
- php 导出pdf文件
- scriptform 导出pdf文件
- smartforms 导出pdf文件
- Itext 导出pdf文件
- java篇——java导出pdf文件
- Java实现Pdf导出
- Android底部中间+号导航
- Azure Stack深入浅出3: Azure Stack运维工具Azure Stack Tools的使用及实战
- js比较时间大小
- 常用sql语句汇总
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- java 导出pdf文件
- Xms Xmx PermSize MaxPermSize 区别
- Gradle 入门到精通(三)
- 关于我遇到的问题集锦,希望对后学者有所帮助
- 怎么禁止输入框记录输入记录,双击input出现输入过的记录
- POJ 动态规划题集
- 25匹马,5个赛道,决出前n名
- JVM高级特性与实践(五):实例探究Class类文件 及 常量池
- C++参考在线