导航:首页 > 文档加密 > javapdf水印图片

javapdf水印图片

发布时间:2022-07-17 03:59:11

java中打印的pdf怎么添加图片水印

添加水印可以参考使用控件来添加的方法,如下:

1. 添加单个图片水印效果:

import com.spire.pdf.*;

import java.awt.geom.Rectangle2D;

public class watermark {

public static void main(String[] args) {

//加载PDF文档

PdfDocument doc = new PdfDocument();

doc.loadFromFile("C:\Users\Administrator\Desktop\Sample.pdf");

//获取第一页

PdfPageBase page = doc.getPages().get(0);

//设置背景图片

page.setBackgroundImage("C:\Users\Administrator\Desktop\logo.png");

//设置背景区域

Rectangle2D.Float rect = new Rectangle2D.Float();

rect.setRect(280, 300, 150, 150);

page.setBackgroundRegion(rect);

//保存文档

doc.saveToFile("output/imageWaterMark.pdf");

doc.close();

}

}

2. 添加平铺图片水印效果

import com.spire.pdf.*;

import com.spire.pdf.graphics.PdfImage;

import com.spire.pdf.graphics.PdfTilingBrush;

import java.awt.*;

import java.awt.geom.Dimension2D;

import java.awt.geom.Rectangle2D;

public class AddBackground {

public static void main(String[] args) {

//创建PdfDocument对象,并加载PDF测试文档

PdfDocument pdf = new PdfDocument();

pdf.loadFromFile("test.pdf");

//遍历文档每一页,加载图片,并设置成平铺背景(水印)

for (int i = 0; i < pdf.getPages().getCount();i++)

{

PdfPageBase page = pdf.getPages().get(i);

Dimension2D dimension2D = new Dimension();

dimension2D.setSize(page.getCanvas().getSize().getWidth()/4, page.getCanvas().getSize().getHeight()/3);

PdfTilingBrush brush = new PdfTilingBrush(dimension2D);

brush.getGraphics().setTransparency(0.2f);

brush.getGraphics().translateTransform(brush.getSize().getWidth()/10,brush.getSize().getHeight()/10);

brush.getGraphics().rotateTransform(30);

PdfImage image = PdfImage.fromImage("logo.png");

brush.getGraphics().drawImage(image,brush.getSize().getWidth()-image.getWidth()/2,(brush.getSize().getHeight())/2);


Rectangle2D rectangle2D = new Rectangle2D.Float();

rectangle2D.setFrame(new Point(0,0),page.getCanvas().getClientSize());

page.getCanvas().drawRectangle(brush,rectangle2D);

}


//保存文档

pdf.saveToFile("SetTiledBackground.pdf");

pdf.dispose();

}

}

注:这里使用的是free Spire.Pdf.jar(以上代码参考自文章1、文章2)

② java 如何给pdf文件加水印

可以使用Spire.PDF for Java通过Java来添加水印。

首先,您需要在 Java 程序中添加 Spire.Pdf.jar 文件作为依赖项。您可以从这个链接下载 JAR 文件;如果您使用Maven,则可以通过在 pom.xml 文件中添加以下代码导入 JAR 文件。

<repositories>
<repository>
<id>com.e-iceblue</id>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository></repositories><dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf</artifactId>
<version>5.3.1</version>
</dependency></dependencies>

1.添加图片水印

代码如下:

import com.spire.pdf.*;

import java.awt.geom.Rectangle2D;

public class watermark {

public static void main(String[] args) {

//加载PDF文档

PdfDocument doc = new PdfDocument();
doc.loadFromFile("C:\Users\Administrator\Desktop\Sample.pdf");

//获取第一页
PdfPageBase page = doc.getPages().get(0);

//设置背景图片
page.setBackgroundImage("C:\Users\Administrator\Desktop\logo.png");

//设置背景区域
Rectangle2D.Float rect = new Rectangle2D.Float();
rect.setRect(280, 300, 150, 150);
page.setBackgroundRegion(rect);

//保存文档
doc.saveToFile("output/imageWaterMark.pdf");
doc.close();

}

}

2.添加文本水印

代码如下:

import com.spire.pdf.*;

import com.spire.pdf.graphics.*;

import java.awt.*;

import java.awt.geom.*;

public class Textwatermark {
public static void main(String[] args) {
//创建PdfDocument对象
PdfDocument pdf = new PdfDocument();

//加载示例文档
pdf.loadFromFile("C:\Users\Administrator\Desktop\Sample.pdf");
//获取第一页
PdfPageBase page = pdf.getPages().get(0);

//调用insertWatermark方法插入文本水印
insertWatermark(page, "E-ICEBLUE");
//保存文档
pdf.saveToFile("out/textWaterMark.pdf");
}

static void insertWatermark(PdfPageBase page, String watermark) {
Dimension2D dimension2D = new Dimension();
dimension2D.setSize(page.getCanvas().getClientSize().getWidth() / 2, page.getCanvas().getClientSize().getHeight() / 3);
PdfTilingBrush brush = new PdfTilingBrush(dimension2D);
brush.getGraphics().setTransparency(0.3F);
brush.getGraphics().save();
brush.getGraphics().translateTransform((float) brush.getSize().getWidth() / 2, (float) brush.getSize().getHeight() / 2);
brush.getGraphics().rotateTransform(-45);
brush.getGraphics().drawString(watermark, new PdfFont(PdfFontFamily.Helvetica, 24), PdfBrushes.getViolet(), 0, 0, new PdfStringFormat(PdfTextAlignment.Center));
brush.getGraphics().restore();
brush.getGraphics().setTransparency(1);
Rectangle2D loRect = new Rectangle2D.Float();
loRect.setFrame(new Point2D.Float(0, 0), page.getCanvas().getClientSize());
page.getCanvas().drawRectangle(brush, loRect);
}

}
希望对您有帮助。

③ java 怎样给相对路径下的pdf文件加水印

3、在文档选项页面,选择水印--添加;

4、首先输入文本即水印内容,以及文本大小,颜色和字体信息;
5、接着设置文本放置的方向,可以自定义任意角度,为了不影响阅读,可以设置透明度;

④ 如何将PDF文件添加上图片水印

给PDF文件添加图片水印的方法,可以批量添加:

第一步,电脑上下载“优速水印工厂”软件工具后安装打开,点击软件界面左边的【PDF水印】功能,然后再点击【添加文件】按钮,将需要添加图片水印的PDF文件导入到软件中,软件支持批量处理,节省时间。

⑤ pdf文件怎么添加水印呢

教你如何快速给pdf文件加水印,支持批量添加:

第一步,电脑上下载软件工具后安装打开,点击软件界面左边的【PDF水印】功能,然后再点击【添加文件】按钮,将需要添加图片水印的PDF文件导入到软件中,软件支持批量处理,节省时间。

⑥ java如何实现在web工程中用OpenOffice生成带有图片水印的pdf

需要itext2.1.5,

以下是对pdf加水印的代码,包括文字水印和图片水印


public int fileCopy(String srcPath, String destPath) {
FileOutputStream fos = null;
FileInputStream fis = null;
try {
fos = new FileOutputStream(destPath);
fis = new FileInputStream(srcPath);
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
return 1;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fis.close();
fos.flush();
fos.close();

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return 0;
}

/**
* 为pdf文件加文字水印
*
* @param srcPath
* 源文件路径
* @param destPath
* 目标文件路径
* @param waterText
* 水印文字
* @throws DocumentException
* @throws IOException
*/
public void wordWaterMark(String srcPath, String destPath, String waterText) throws DocumentException, IOException {
int result = fileCopy(srcPath, destPath);
if (result == 1) {
// 待加水印的文件
PdfReader reader = new PdfReader(destPath);
// 加完水印的文件
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(srcPath));

int total = reader.getNumberOfPages() + 1;
PdfContentByte content;
// 设置字体
BaseFont base = BaseFont.createFont(fontPath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

// 水印文字
int j = waterText.length(); // 文字长度
char c = 0;
int high = 0;// 高度
// 循环对每页插入水印
for (int i = 1; i < total; i++) {
// 水印的起始
high = 60;
content = stamper.getUnderContent(i);
PdfGState gs = new PdfGState();
gs.setFillOpacity(0.1f);// 设置透明度为0.2
content.setGState(gs);
// 开始
content.beginText();
// 设置颜色
// content.setColorFill(new Color());
// 设置字体及字号
content.setFontAndSize(base, 88);
// 设置起始位置
content.setTextMatrix(120, 333);
// 开始写入水印
for (int k = 0; k < j; k++) {
content.setTextRise(high);
c = waterText.charAt(k);
content.showText(c + "");
high += 20;
}
content.endText();

}
stamper.close();
System.out.println("添加成功++++++++++++++++++++++++++++++++++++++++++");
} else {
System.out.println("复制pdf失败====================");
}

}

public void picWaterMark(String srcPath, String destPath, String imageFilePath)
throws DocumentException, IOException {
int result = fileCopy(srcPath, destPath);
if (result == 1) {
// 待加水印的文件
PdfReader reader = new PdfReader(destPath);
// 加完水印的文件
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(srcPath));
Image img = Image.getInstance(imageFilePath);
img.setAbsolutePosition(50, 400);// 坐标
img.setRotation(20);// 旋转 弧度
img.setRotationDegrees(45);// 旋转 角度
// image.scaleAbsolute(200,100);//自定义大小
img.scalePercent(50);// 依照比例缩放
int pageSize = reader.getNumberOfPages();
for (int i = 1; i <= pageSize; i++) {
PdfContentByte under = stamper.getUnderContent(i);
under.addImage(img);
PdfGState gs = new PdfGState();
gs.setFillOpacity(0.2f);// 设置透明度为0.2
under.setGState(gs);
}
stamper.close();// 关闭
System.out.println("添加成功++++++++++++++++++++++++++++++++++++++++++");
} else {
System.out.println("复制pdf失败====================");
}
}


linux下转pdf可以用libreoffice,需要安装,这个是免费的,具体代码如下:

String command = "libreoffice5.0 --invisible --convert-to pdf:writer_pdf_Export --outdir " + destFilepath
+ " " + source;
try {
p = Runtime.getRuntime().exec(command);
p.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

⑦ java pdf itext 水印 怎么做到 汉字水印 平铺或者换行 不想每页只插入一行水印

// 仅设置一个图片实例对象,整个PDF文档只应用一个图片对象,极大减少因为增加图片水印导致PDF文档大小增加
Image waterMarkImage = null ; //这里是图片对象,
if (waterMarkImage == null) {
waterMarkImage = Image.getInstance(path);//path 根据自己的实际情况填写。
}
// 添加水印图片,文档正文内容采用横向三列,竖向两列模式增加图片水印
for(int i = 0 ; i < 100; i ++){
for(int j = 0 ; j < 4 ; j ++ ){
waterMarkPdfContent.addImage(getWaterMarkImage(waterMarkImage,pageWidth * 0.3f * j , pageHeight * 0.05f * i));
}
}
public static Image getWaterMarkImage(Image waterMarkImage,
float xPosition, float yPosition) {
waterMarkImage.setAbsolutePosition(xPosition, yPosition);// 坐标
//waterMarkImage.setRotation(-20);// 旋转 弧度
//waterMarkImage.setRotationDegrees(-30);// 旋转 角度
waterMarkImage.scalePercent(100);// 依照比例缩放
return waterMarkImage;
}

⑧ 怎么给PDF文件添加水印

快速批量给pdf添加水印的方法,一键快速处理:

第一步,下载好上面的工具后安装打开使用。左边功能区选择【PDF水印】功能。然后点击【添加文件】或软件中间空白处,将需要加水印的PDF图片导入到软件中,成功后PDF文件名会显示在软件中。

⑨ 如何给PDF文件添加水印

快速给PDF添加水印的方法,一键批量添加:

第一步,下载软件工具后安装打开,点击软件界面左边的【PDF水印】功能,然后再点击【添加文件】按钮,将需要添加图片水印的PDF文件导入到软件中,软件支持批量处理,节省时间。

⑩ 有哪些可以给pdf加水印,java第三方开源类库

作者:流浪的小鼠
链接:https://www.hu.com/question/264003636/answer/279707367
来源:知乎
着作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

使用iText ,感觉还是比较简单的
具体代码:
/**
*
* 【功能描述:添加图片和文字水印】 【功能详细描述:功能详细描述】
* @param srcFile 待加水印文件
* @param destFile 加水印后存放地址
* @param text 加水印的文本内容
* @param textWidth 文字横坐标
* @param textHeight 文字纵坐标
* @throws Exception
*/
public void addWaterMark(String srcFile, String destFile, String text,
int textWidth, int textHeight) throws Exception
{
// 待加水印的文件
PdfReader reader = new PdfReader(srcFile);
// 加完水印的文件
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(
destFile));
int total = reader.getNumberOfPages() + 1;
PdfContentByte content;
// 设置字体
BaseFont font = BaseFont.createFont();
// 循环对每页插入水印
for (int i = 1; i < total; i++)
{
// 水印的起始
content = stamper.getUnderContent(i);
// 开始
content.beginText();
// 设置颜色 默认为蓝色
content.setColorFill(BaseColor.BLUE);
// content.setColorFill(Color.GRAY);
// 设置字体及字号
content.setFontAndSize(font, 38);
// 设置起始位置
// content.setTextMatrix(400, 880);
content.setTextMatrix(textWidth, textHeight);
// 开始写入水印
content.showTextAligned(Element.ALIGN_LEFT, text, textWidth,
textHeight, 45);
content.endText();
}
stamper.close();
}

阅读全文

与javapdf水印图片相关的资料

热点内容
广播PDF 浏览:216
单片机编程300例汇编百度 浏览:33
腾讯云连接不上服务器 浏览:221
不能用来表示算法的是 浏览:859
6轴机器人算法 浏览:890
手机主题照片在哪个文件夹 浏览:294
安卓手机后期用什么软件调色 浏览:628
cad修改快捷键的命令 浏览:242
好钱包app怎么登录不了 浏览:859
树莓派都用python不用c 浏览:757
access文件夹树的构造 浏览:662
安卓多指操作怎么设置 浏览:658
linux树形目录 浏览:727
平方根的简单算法 浏览:898
千牛订单页面信息加密取消 浏览:558
单片机自制红外遥控灯 浏览:719
服务器最小配置怎么弄 浏览:853
ibm服务器硬件如何升级 浏览:923
全球程序员节点赞 浏览:986
php函数传递数组 浏览:632