日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

总结之使用lowagie.text添加PDF水印

發布時間:2023/12/9 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 总结之使用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水印的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。