日期:2014-05-16 浏览次数:20831 次
package com.fruitking.testpdf.util;
import java.awt.Color;
import java.io.IOException;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.Image;
import com.lowagie.text.Phrase;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.ColumnText;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfGState;
import com.lowagie.text.pdf.PdfPageEventHelper;
import com.lowagie.text.pdf.PdfWriter;
public class PdfFileExportUtil {
private static Font pdf8Font = null;
private static Font pdf20Font = null;
/**
* 设置PDF创建者信息
* @param pdfDocument
*/
public static Document setCreatorInfo(Document pdfDocument){
if(pdfDocument==null){
return null;
}
//文档属性
pdfDocument.addTitle("水果大王信息技术有限公司数据安全产品");
pdfDocument.addAuthor("杭州水果大王信息技术有限公司");
pdfDocument.addSubject("文件导出的信息安全管控");
pdfDocument.addKeywords("文件导出,信息安全");//文档关键字信息
pdfDocument.addCreator("水果大王文件取数系统");//应用程序名称
return pdfDocument;
}
/**
* 获取中文字符集且是8号字体,常用作表格内容的字体格式
* @param fullFilePath
*/
public static Font getChinese8Font()throws DocumentException,IOException{
if(pdf8Font==null){
//设置中文字体和字体样式
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
pdf8Font = new Font(bfChinese, 8, Font.NORMAL);
}
return pdf8Font;
}
/**
* 获取中文字符集且是8号字体,常用作文字水印信息
* @param fullFilePath
*/
public static Font getChinese20Font()throws DocumentException,IOException{
if(pdf20Font==null){
//设置中文字体和字体样式
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
pdf20Font = new Font(bfChinese, 20, Font.BOLD, Color.CYAN);
}
return pdf20Font;
}
/**
* 设置成只读权限
* @param pdfWriter
*/
public static PdfWriter setReadOnlyPDFFile(PdfWriter pdfWriter)throws DocumentException{
pdfWriter.setEncryption(null, null,PdfWriter.ALLOW_PRINTING, PdfWriter.STANDARD_ENCRYPTION_128);
return pdfWriter;
}
/**
* 变更一个图片对象的展示位置和角度信息
* @param waterMarkImage
* @param xPosition
* @param yPosition
* @return
*/
public static Image getWaterMarkImage(Image waterMarkImage,float xPosition,float yPosition){
waterMarkImage.setAbsolutePosition(xPosition, yPosition);//坐标
waterMarkImage.setRotation(-20);//旋转 弧度
waterMarkImage.setRotationDegrees(-45);//旋转 角度
waterMarkImage.scalePercent(100);//依照比例缩放
return waterMarkImage;
}
/**
* 为PDF分页时创建添加文本水印的事件信息
*/
class TextWaterMarkPdfPageEvent exten