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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java -PDF添加文本水印与图片水印

發布時間:2023/12/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java -PDF添加文本水印与图片水印 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java pdf添加水印文本及圖片文本

PDF文件添加文本水印:

private static int interval = 30; public static void waterMark(String inputFile,String outputFile, String waterMarkName) { try { PdfReader reader = new PdfReader(inputFile); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(outputFile));//這里的字體設置比較關鍵,這個設置支持中文的寫法BaseFont base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED); //使用系統字體Rectangle pageRect = null;PdfGState gs = new PdfGState();//設置透明度gs.setFillOpacity(0.3f);gs.setStrokeOpacity(0.3f);int total = reader.getNumberOfPages() + 1;JLabel label = new JLabel();FontMetrics metrics;int textH = 0;int textW = 0;label.setText(waterMarkName);metrics = label.getFontMetrics(label.getFont()); textH = metrics.getHeight();textW = metrics.stringWidth(label.getText());PdfContentByte under; for (int i = 1; i < total; i++) {pageRect = reader.getPageSizeWithRotation(i);under = stamper.getOverContent(i);under.saveState(); under.setGState(gs); under.beginText(); under.setFontAndSize(base, 30); //控制字體間寬度// 水印文字成30度角傾斜for (int height = interval + textH; height < pageRect.getHeight(); height = height + textH*8) {for (int width = interval + textW; width < pageRect.getWidth() + textW; width = width + textW*4) {under.showTextAligned(Element.ALIGN_LEFT , waterMarkName, width - textW, height - textH, 30); } } // 添加水印文字 under.endText(); } //關閉流 stamper.close(); reader.close(); } catch (Exception e) { e.printStackTrace(); } }

?

?

PDF添加圖片水印:

private static final float IAMGE_HEIGHT = 110f; // 水印圖片的的高度private static final float IAMGE_WIDTH = 110f; // 水印圖片的的寬度public static void addPdfMark(String pdfPath,String logoPath, String outPath) throws Exception {PdfReader reader = new PdfReader(pdfPath, "PDF".getBytes());// 如果是web項目,直接下載應該放到response的流里面// PdfStamper stamp = new PdfStamper(reader,response.getOutputStream());// 添加水印之后的pdf文件PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(outPath));int pageSize = reader.getNumberOfPages();float pageHeight = reader.getPageSize(1).getHeight();float pageWidth = reader.getPageSize(1).getWidth();try {// 每兩行顯示兩個 左邊一個,右邊一個int lineNum = (int) (pageHeight / IAMGE_HEIGHT); // 行數int middleY = (int) pageWidth / 2;for (int i = 1; i <= pageSize; i++) {for (int j = 0, k = 0; j < lineNum; j = j + 4, k++) {Random random = new Random();// 放入水印Image img = Image.getInstance(logoPath);img.scaleAbsolute(IAMGE_WIDTH, IAMGE_HEIGHT * 184 / 455);// 將水印顯示到最底層 img.setAlignment(Image.UNDERLYING);int trueY;while (true) {trueY = random.nextInt(middleY);if (trueY > IAMGE_WIDTH / 2 && trueY < (middleY - IAMGE_WIDTH)) {break;}}// 水印的位置img.setAbsolutePosition(trueY, j * IAMGE_HEIGHT + (float) random.nextInt((int) IAMGE_HEIGHT) - (k % 2) * 10);// 旋轉 角度img.setRotationDegrees(random.nextInt(360));PdfContentByte under = stamp.getUnderContent(i);PdfGState gs = new PdfGState();// 設置透明度為0.5gs.setFillOpacity(0.5f);under.setGState(gs);under.addImage(img);while (true) {trueY = random.nextInt(middleY) + middleY;if (trueY > middleY + IAMGE_WIDTH / 2 && trueY < (2 * middleY - IAMGE_WIDTH)) {break;}}// 水印的位置img.setAbsolutePosition(trueY, j * IAMGE_HEIGHT + (float) random.nextInt((int) IAMGE_HEIGHT) - (k % 2) * 10);// 旋轉角度img.setRotationDegrees(random.nextInt(360));under.addImage(img);}}} catch (Exception e) {throw e;} finally {stamp.close();reader.close();}

測試--------------------------------------------------------------------------------

public static void main(String[] args) throws Exception {waterMark("xxx.pdf", "yyy.pdf", "測試工程");//addPdfMark("xxx.pdf","image.png","yyy.xml");System.out.println("結束");}}

?

參考了很多前輩的,希望能幫到各位!

模塊所需jar包(itextpdf-5.5.13.1.jar)

轉載于:https://www.cnblogs.com/gccsbg/p/11126634.html

總結

以上是生活随笔為你收集整理的java -PDF添加文本水印与图片水印的全部內容,希望文章能夠幫你解決所遇到的問題。

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