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;
}
}
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;
}
}
相关文章推荐
- Java程序员从笨鸟到菜鸟之(一百零六)java操作office和pdf文件(四)页面列表导出cvs,excel、pdf报表.
- java导出pdf文件(插入图片及信息)
- java PDF文件导出
- jsf中用java导出pdf文件
- java导出PDF文件
- Java程序员从笨鸟到菜鸟之(一百零六)java操作office和pdf文件(四)页面列表导出cvs,excel、pdf报表.
- Java程序员从笨鸟到菜鸟之(一百零四)java操作office和pdf文件(二)利用POI实现数据导出excel报表
- Java导出PDF文件的实现
- java 导出pdf文件
- Java导出pdf文件数据
- java-web 导出pdf文件并增加水印和照片
- JAVA 导出PDF文件
- java导出PDF文件的实例
- java操作office和pdf文件页面列表导出cvs,excel、pdf报表.
- java导出pdf文件
- Java中导出pdf文件,pdf工具类demo
- Java程序员从笨鸟到菜鸟之(一百零五)java操作office和pdf文件(三)利用jxl实现数据导出excel报表以及与POI的区别
- Java导出PDF文件
- Java程序员从笨鸟到菜鸟之(一百零五)java操作office和pdf文件(三)利用jxl实现数据导出excel报表以及与POI的区别
- java操作office和pdf文件(四)页面列表导出cvs,excel、pdf报表.