import java.awt.Color;
import java.awt.Point;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.lowagie.text.Anchor;
import com.lowagie.text.Annotation;
import com.lowagie.text.BadElementException;
import com.lowagie.text.Cell;
import com.lowagie.text.Chapter;
import com.lowagie.text.Chunk;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.HeaderFooter;
import com.lowagie.text.Image;
import com.lowagie.text.ListItem;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.Rectangle;
import com.lowagie.text.Section;
import com.lowagie.text.Table;
import com.lowagie.text.pdf.PdfWriter;
public class PdfUtil {
private static final Log log = LogFactory.getLog(PdfUtil.class);//
日志
public static void exportPdf(String content, String pdfPath) {
Document document =
null;
OutputStream out = null;
try {
//
1.建立com.lowagie.text.Document对象的实例
document =
new Document();
//
2.建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中
out = new
FileOutputStream(pdfPath);
PdfWriter.getInstance(document, out);
//
3.打开文档
document.open();
//
4.向文档中添加内容
document.add(new Paragraph(content)); // 会中文乱码
} catch (FileNotFoundException
e) {
e.printStackTrace();
} catch (DocumentException e)
{
e.printStackTrace();
} finally {
document.close();// 5.关闭文档
try {
out.close();
} catch
(IOException e) {
e.printStackTrace();
}
}
}
public static void exportPdf(Paragraph para, String pdfPath,
boolean
vertical) {
Document doc = null;
OutputStream out = null;
try {
//
1.建立com.lowagie.text.Document对象的实例
doc =
buildDoc(vertical);
//
2.建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中
out = new
FileOutputStream(pdfPath);
PdfWriter.getInstance(doc, out);
//
3.打开文档
doc.open();
//
4.向文档中添加内容
doc.add(para);
} catch (Exception e) {
e.printStackTrace();
log.debug("生成pdf出错");
} finally {
close(doc,
out);// 5.关闭
}
}
public static void exportPdf(Document doc, Element element, String
pdfPath) {
OutputStream out = null;
try {
//
2.建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中
out = new
FileOutputStream(pdfPath);
PdfWriter.getInstance(doc, out);
//
3.打开文档
doc.open();
//
4.向文档中添加内容
doc.add(element);
} catch (Exception e) {
e.printStackTrace();
log.debug("生成pdf出错");
} finally {
close(doc,
out);// 5.关闭
}
}
public static void exprotPdf(Document doc, PdfBean pdfBean) {
OutputStream out = null;
try {
//
2.建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中
out = new
FileOutputStream(pdfBean.getFileName());
PdfWriter
writer = gerPdfWriter(doc, out);
doc =
setPdfProperty(doc, pdfBean); // 设置属性
//
加密处理
if
(pdfBean.isEncryptFlag()) {
List permissionList = pdfBean.getPermissionList();
if (permissionList != null &&
permissionList.size() > 0) {
int allPermission = 0;
for (Iterator it = permissionList.iterator(); it.hasNext();)
{
int permission = (Integer) it.next();
allPermission = allPermission | permission; // 有或运算来累加权限
}
writer = encrypt(writer, pdfBean.getUserPsw(), pdfBean
.getOwnerPsw(), allPermission);
}
}
//
3.打开文档
doc.open();
//
4.向文档中添加内容
List
elementList = pdfBean.getElementList();
if(elementList != null &&
!elementList.isEmpty()){
for(Iterator it = elementList.iterator(); it.hasNext();){
Element element = (Element) it.next();
doc.add(element);
}
}
} catch (Exception e) {
e.printStackTrace();
log.debug("生成pdf出错");
} finally {
close(doc,
out);// 5.关闭
}
}
public static void exprotPdfToUrl(Document doc, PdfBean pdfBean,
HttpServletResponse response) {
ByteArrayOutputStream bao =
null;
ServletOutputStream out =
null;
try {
//
2.建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中
bao = new
ByteArrayOutputStream();
PdfWriter
writer = gerPdfWriter(doc, bao);
doc =
setPdfProperty(doc, pdfBean); // 设置属性
//
加密处理
if
(pdfBean.isEncryptFlag()) {
List permissionList = pdfBean.getPermissionList();
if (permissionList != null &&
permissionList.size() > 0) {
int allPermission = 0;
for (Iterator it = permissionList.iterator(); it.hasNext();)
{
int permission = (Integer) it.next();
allPermission = allPermission | permission; // 有或运算来累加权限
}
writer = encrypt(writer, pdfBean.getUserPsw(), pdfBean
.getOwnerPsw(), allPermission);
}
}
//
3.打开文档
doc.open();
//
4.向文档中添加内容
List
elementList = pdfBean.getElementList();
if(elementList != null &&
!elementList.isEmpty()){
for(Iterator it = elementList.iterator(); it.hasNext();){
Element element = (Element) it.next();
doc.add(element);
}
}
doc.close();
//关闭document
//response设置
response.setContentType("application/pdf");
// response.setHeader("Content-Disposition",
"attachment;filename=\"temp.pdf\""); // response.setHeader("Cache-Control", "must-revalidate, post-check=0,
pre-check=0"); // response.setHeader("Pragma",
"public"); // response.setDateHeader("Expires", (System.currentTimeMillis() +
1000)); response.setContentLength(bao.size());
out =
response.getOutputStream();
bao.writeTo(out);
out.flush(); } catch (Exception e) {
e.printStackTrace();
log.debug("页面输出pdf出错");
} finally {
try {
bao.close();
out.close();
} catch
(IOException e) {
e.printStackTrace();