日期:2014-05-16 浏览次数:20732 次
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