总结之使用lowagie.text添加PDF水印
生活随笔
收集整理的這篇文章主要介紹了
总结之使用lowagie.text添加PDF水印
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
引入依賴
<!-- pdf水印 --><dependency><groupId>com.lowagie.text</groupId><artifactId>com.springsource.com.lowagie.text</artifactId><version>${com.lowagie.text.version}</version></dependency>工具類
import com.lowagie.text.DocumentException; import com.lowagie.text.Element; import com.lowagie.text.Font; import com.lowagie.text.Phrase; import com.lowagie.text.Rectangle; 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.PdfReader; import com.lowagie.text.pdf.PdfStamper; import com.wisesoft.core.util.FileUtil;public class PdfWatermark {/** 水印后綴 */public static final String WATERMARK_SUFFIX = "_warter.pdf";public static void main(String[] args) throws Exception {addWatermark("D:\\tomcat7\\webapps\\pdf\\AHT_1598439883000884326.pdf", "D:\\tomcat7\\webapps\\pdf\\WAHT_1598439883000884326.pdf","成都市系統","成都市系統","成都市局","成都市系統");}public static void addWatermark(String sourcepath, String savepath, String waterMarkName) throws Exception {if (FileUtil.exists(sourcepath)) {PdfReader pdfReader = new PdfReader(sourcepath);// Get the PdfStamper objectPdfStamper pdfStamper = new PdfStamper(pdfReader, new FileOutputStream(savepath));PdfContentByte content = null;BaseFont base = null;Rectangle pageRect = null;PdfGState gs = new PdfGState();try {// 設置字體base = BaseFont.createFont("/SIMYOU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);} catch (DocumentException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}Font f = new Font(base);try {if (base == null || pdfStamper == null) {return;}// 設置透明度為0.4gs.setFillOpacity(0.4f);gs.setStrokeOpacity(0.4f);int toPage = pdfStamper.getReader().getNumberOfPages();for (int i = 1; i <= toPage; i++) {pageRect = pdfStamper.getReader().getPageSizeWithRotation(i);// 計算水印X,Y坐標float x = pageRect.getWidth() / 2;float y = pageRect.getHeight() / 2;// 獲得PDF最頂層content = pdfStamper.getOverContent(i);content.saveState();// set Transparencycontent.setGState(gs);content.beginText();content.setColorFill(Color.LIGHT_GRAY);content.setFontAndSize(base, 40);// 水印文字成45度角傾斜content.showTextAligned(Element.ALIGN_CENTER, waterMarkName, x, y, 45);content.endText();}System.out.println("水印添加成功,保存地址:"+savepath+",水印為:"+waterMarkName);} catch (Exception ex) {ex.printStackTrace();} finally {content = null;base = null;pageRect = null;pdfStamper.close();}}}public static void addWatermark(String sourcepath, String savepath, String waterMarkName, String pageHeade,String foot) throws Exception {if (FileUtil.exists(sourcepath)) {PdfReader pdfReader = new PdfReader(sourcepath);// Get the PdfStamper objectPdfStamper pdfStamper = new PdfStamper(pdfReader, new FileOutputStream(savepath));PdfContentByte content = null;BaseFont base = null;Rectangle pageRect = null;PdfGState gs = new PdfGState();try {// 設置字體base = BaseFont.createFont("/SIMYOU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);} catch (DocumentException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}Font f = new Font(base);try {if (base == null || pdfStamper == null) {return;}// 設置透明度為0.4gs.setFillOpacity(0.4f);gs.setStrokeOpacity(0.4f);int toPage = pdfStamper.getReader().getNumberOfPages();for (int i = 1; i <= toPage; i++) {pageRect = pdfStamper.getReader().getPageSizeWithRotation(i);// 計算水印X,Y坐標float x = pageRect.getWidth() / 2;float y = pageRect.getHeight() / 2;// 獲得PDF最頂層content = pdfStamper.getOverContent(i);content.saveState();// set Transparencycontent.setGState(gs);content.beginText();content.setColorFill(Color.LIGHT_GRAY);content.setFontAndSize(base, 60);// 水印文字成45度角傾斜content.showTextAligned(Element.ALIGN_CENTER, waterMarkName, x, y, 45);content.endText();// 添加頁腳,左側文字,右側頁碼ColumnText.showTextAligned(content, Element.ALIGN_RIGHT,new Phrase(String.format("第 %d 頁/共 %d 頁", i, toPage), f), 550f, 28, 0);ColumnText.showTextAligned(content, Element.ALIGN_LEFT, new Phrase(foot, f), 50f, 28, 0);// 添加頁眉 (文字頁眉,居中)ColumnText.showTextAligned(content, Element.ALIGN_CENTER, new Phrase(pageHeade, f), 150f, 800, 0);}System.out.println("水印添加成功,保存地址:"+savepath+",水印為:"+waterMarkName);} catch (Exception ex) {ex.printStackTrace();} finally {content = null;base = null;pageRect = null;pdfStamper.close();}}}public static void addWatermark(String sourcepath, String savepath, String waterMarkName, String pageHeadLeft,String pageHeadRight,String foot) throws Exception {if (FileUtil.exists(sourcepath)) {PdfReader pdfReader = new PdfReader(sourcepath);// Get the PdfStamper objectPdfStamper pdfStamper = new PdfStamper(pdfReader, new FileOutputStream(savepath));PdfContentByte content = null;BaseFont base = null;Rectangle pageRect = null;PdfGState gs = new PdfGState();try {// 設置字體base = BaseFont.createFont("/SIMYOU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);} catch (DocumentException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}Font f = new Font(base);try {if (base == null || pdfStamper == null) {return;}int toPage = pdfStamper.getReader().getNumberOfPages();for (int i = 1; i <= toPage; i++) {// 設置透明度為0.4gs.setFillOpacity(0.4f);gs.setStrokeOpacity(0.4f);pageRect = pdfStamper.getReader().getPageSizeWithRotation(i);// 計算水印X,Y坐標float x = pageRect.getWidth() / 2;float y = pageRect.getHeight() / 2;// 獲得PDF最頂層content = pdfStamper.getOverContent(i);content.saveState();// set Transparencycontent.setGState(gs);content.beginText();content.setColorFill(Color.LIGHT_GRAY);content.setFontAndSize(base, 40);// 水印文字成45度角傾斜content.showTextAligned(Element.ALIGN_CENTER, waterMarkName, x, y, 45);content.endText();// 設置透明度為0.4gs.setFillOpacity(0.9f);gs.setStrokeOpacity(0.9f);// 添加頁腳,左側文字,右側頁碼ColumnText.showTextAligned(content, Element.ALIGN_RIGHT,new Phrase(String.format("第 %d 頁/共 %d 頁", i, toPage), f), 550f, 20, 0);ColumnText.showTextAligned(content, Element.ALIGN_LEFT, new Phrase(foot, f), 50f, 20, 0);// 添加左頁眉ColumnText.showTextAligned(content, Element.ALIGN_CENTER, new Phrase(pageHeadLeft, f), 150f, 815, 0);// 添加右頁眉ColumnText.showTextAligned(content, Element.ALIGN_CENTER, new Phrase(pageHeadRight, f), 500f, 815, 0);}System.out.println("水印添加成功,保存地址:"+savepath+",水印為:"+waterMarkName);} catch (Exception ex) {ex.printStackTrace();} finally {content = null;base = null;pageRect = null;pdfStamper.close();}}}}總結
以上是生活随笔為你收集整理的总结之使用lowagie.text添加PDF水印的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VLC简介及使用说明
- 下一篇: MySql服务无法连接