700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java pdf水印排布问题_Java实现pdf文件添加水印 铺满全页。

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

时间:2020-04-06 14:37:32

相关推荐

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

版权声明:本文为博主原创文章,未经博主允许。 /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

原文:/duan1309/article/details/81232300

版权声明:本文为博主原创文章,转载请附上博文链接!

喜欢 (0)or分享 (0)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。