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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java pdf水印排布问题_Java实现pdf文件添加水印,铺满全页。

發布時間:2025/3/20 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java pdf水印排布问题_Java实现pdf文件添加水印,铺满全页。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/duan1309/article/details/81232300

因項目需要將word文件(.doc,.docx,.rtf)轉換成pdf文件并添加水印,鋪滿全頁。

現就將為pdf文件添加水印提取出來,word文件轉換成pdf文件,網上的教程很多,如需需要聯系我即可。

import java.awt.FontMetrics;

import java.io.FileOutputStream;

import javax.swing.JLabel;

import com.itextpdf.text.Element;

import com.itextpdf.text.Rectangle;

import com.itextpdf.text.pdf.BaseFont;

import com.itextpdf.text.pdf.PdfContentByte;

import com.itextpdf.text.pdf.PdfGState;

import com.itextpdf.text.pdf.PdfReader;

import com.itextpdf.text.pdf.PdfStamper;

import com.itextpdf.text.pdf.PdfWriter;

public class TestwaterMark {

private static int interval = -5;

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.4f);

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, 20);

// 水印文字成30度角傾斜

//你可以隨心所欲的改你自己想要的角度

for (int height = interval + textH; height < pageRect.getHeight();

height = height + textH*3) {

for (int width = interval + textW; width < pageRect.getWidth() + textW;

width = width + textW*2) {

under.showTextAligned(Element.ALIGN_LEFT

, waterMarkName, width – textW,

height – textH, 30);

}

}

// 添加水印文字

under.endText();

}

//說三遍

//一定不要忘記關閉流

//一定不要忘記關閉流

//一定不要忘記關閉流

stamper.close();

reader.close();

} catch (Exception e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

waterMark(“F:/exe/123.pdf”, “F:/exe/456.pdf”, “我是黑豆”);

}

}

示例圖片

———————

作者:duan1309

來源:CSDN

原文:https://blog.csdn.net/duan1309/article/details/81232300

版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

喜歡 (0)or分享 (0)

總結

以上是生活随笔為你收集整理的java pdf水印排布问题_Java实现pdf文件添加水印,铺满全页。的全部內容,希望文章能夠幫你解決所遇到的問題。

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