导航:首页 > 编程语言 > java添加水印

java添加水印

发布时间:2023-10-17 16:29:09

java给tif格式图片加文字水印

packagecom.coderli.image;
importjava.awt.Color;
importjava.awt.Font;
importjava.awt.Graphics;
importjava.awt.Image;
importjava.awt.image.BufferedImage;
importjava.io.File;
importjava.io.FileOutputStream;

importjavax.imageio.ImageIO;

importcom.sun.image.codec.jpeg.JPEGCodec;
importcom.sun.image.codec.jpeg.JPEGImageEncoder;

@SuppressWarnings("restriction")
publicfinalclassImageUtils{
publicImageUtils(){

}


/**
*打印文字水印图片
*
*@parampressText
*--文字
*@paramtargetImg--
*目标图片
*@paramfontName--
*字体名
*@paramfontStyle--
*字体样式
*@paramcolor--
*字体颜色
*@paramfontSize--
*字体大小
*@paramx--
*偏移量
*@paramy
*/

publicstaticvoidpressText(StringpressText,StringtargetImg,
StringfontName,intfontStyle,Colorcolor,intfontSize,intx,
inty){
try{
File_file=newFile(targetImg);
Imagesrc=ImageIO.read(_file);
intwidth=src.getWidth(null);
intheight=src.getHeight(null);
BufferedImageimage=newBufferedImage(width,height,
BufferedImage.TYPE_INT_RGB);
Graphicsg=image.createGraphics();
g.drawImage(src,0,0,width,height,null);
g.setColor(color);
g.setFont(newFont(fontName,fontStyle,fontSize));

g.drawString(pressText,width-fontSize-x,height-fontSize
/2-y);
g.dispose();
FileOutputStreamout=newFileOutputStream(targetImg);
JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
}catch(Exceptione){
System.out.println(e);
}
}

publicstaticvoidmain(String[]args){
pressText("bbs.coderli.com","f:/1.tiff","TimesNewRomas",Font.PLAIN,Color.BLUE,22,150,20);
}
}

这个方法里用的api是支持tiff格式的,你可以试试。

❷ 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文件加水印

Java生成PDF 加密 水印

1、iText简介

iText是一个开放源码的Java类库,可以用来方便地生成PDF文件。大家通过访问http://sourceforge.net/project/showfiles.php?group_id=15255&release_id=167948
下载最新版本的类库,下载完成之后会得到一个.jar包,把这个包加入JDK的classpath即可使用。

如果生成的PDF文件中需要出现中文、日文、韩文字符,则还需要通过访问http://itext.sourceforge.net/downloads/iTextAsian.jar
下载iTextAsian.jar包。

关于iText类库的使用,http://www.lowagie.com/iText/tutorial/index.html
有比较详细的教程。该教程从入门开始,比较系统地介绍了在PDF文件中放入文字、图片、表格等的方法和技巧。

读完这片教程,大致就可以做一些从简单到复杂的PDF文件了。不过,试图通过教程解决在生成PDF文件过程中遇到的所有困难无疑是一种奢望。所以,阅读iText的api文档显得非常重要。读者在下载类库的同时,也可以下载类库的文档。

注:如果以上两个下载链接无法下载而且通过网络也找不到这个jar包的同志可以留下邮箱地址,我会在两个工作日之内发邮件过去。

以下部分我是我调试通过的源代码,提供大家参考:
import java.awt.*;
import java.io.*;

import com.lowagie.text.*;
import com.lowagie.text.Font;
import
com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.*;

/**
* 最近的项目中使用Itext将txt文件转换为PDF文件, 并且实现对文件的一些权限控制。
现实对pdf文件加
*密,添加水印等。
*/
public class PDFConvertBL
{
//
txt原始文件的路径
private static final String txtFilePath = "d:/11.txt";

// 生成的pdf文件路径
private static final String pdfFilePath =
"d:/22.pdf";
// 添加水印图片路径
// private static final String
imageFilePath = "D:/33.jpg";
// 生成临时文件前缀
private static final
String prefix = "tempFile";
// 所有者密码
private static final String
OWNERPASSWORD = "12345678";

/**
* txt文件转换为pdf文件
*
* @param txtFile
txt文件路径
* @param pdfFile pdf文件路径
* @param userPassWord
用户密码
* @param waterMarkName 水印内容
* @param permission
操作权限
*/
public static void generatePDFWithTxt(String txtFile,
String pdfFile, String userPassWord, String
waterMarkName,
int permission)
{

try
{
// 生成临时文件
File file =
File.createTempFile(prefix, ".pdf");
//
创建pdf文件到临时文件
if (createPDFFile(txtFile, file))

{
// 增加水印和加密
waterMark(file.getPath(),
pdfFile, userPassWord, OWNERPASSWORD, waterMarkName, permission);

}
}
catch (Exception e)
{

e.printStackTrace();
}

}

/**
* 创建PDF文档
*
* @param txtFilePath
txt文件路径(源文件)
* @param pdfFilePath pdf文件路径(新文件)
*/
private
static boolean createPDFFile(String txtFilePath, File file)
{

// 设置纸张
Rectangle rect = new Rectangle(PageSize.A4);
//
设置页码
HeaderFooter footer = new HeaderFooter(new Phrase("页码:",
setChineseFont()), true);

footer.setBorder(Rectangle.NO_BORDER);
// step1
Document
doc = new Document(rect, 50, 50, 50, 50);

doc.setFooter(footer);
try
{
FileReader
fileRead = new FileReader(txtFilePath);
BufferedReader read = new
BufferedReader(fileRead);
// 设置pdf文件生成路径 step2

PdfWriter.getInstance(doc, new FileOutputStream(file));
//
打开pdf文件 step3
doc.open();
// 实例化Paragraph
获取写入pdf文件的内容,调用支持中文的方法. step4
while (read.ready())

{
// 添加内容到pdf(这里将会按照txt文件的原始样式输出)

doc.add(new Paragraph(read.readLine(), setChineseFont()));

}
// 关闭pdf文件 step5
doc.close();

return true;
}
catch (Exception e)

{
e.printStackTrace();
return false;

}
}

/**
* 在pdf文件中添加水印
*
* @param inputFile
原始文件
* @param outputFile 水印输出文件
* @param waterMarkName
水印名字
*/
private static void waterMark(String inputFile, String
outputFile, String userPassWord, String ownerPassWord,

String waterMarkName, int permission)
{
try

{
PdfReader reader = new PdfReader(inputFile);

PdfStamper stamper = new PdfStamper(reader, new
FileOutputStream(outputFile));
// 设置密码

stamper.setEncryption(userPassWord.getBytes(), ownerPassWord.getBytes(),
permission, false);
BaseFont base =
BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
BaseFont.NOT_EMBEDDED);
int total = reader.getNumberOfPages() +
1;
// Image image =
Image.getInstance(imageFilePath);
//
image.setAbsolutePosition(200, 400);
PdfContentByte
under;
int j = waterMarkName.length();
char c =
0;
int rise = 0;
for (int i = 1; i < total;
i++)
{
rise = 500;
under =
stamper.getUnderContent(i);
// 添加图片
//
under.addImage(image);
under.beginText();

under.setColorFill(Color.CYAN);
under.setFontAndSize(base,
30);
// 设置水印文字字体倾斜 开始
if (j >=
15)
{
under.setTextMatrix(200,
120);
for (int k = 0; k < j;
k++)
{

under.setTextRise(rise);
c =
waterMarkName.charAt(k);
under.showText(c +
"");
rise -= 20;

}
}
else

{
under.setTextMatrix(180, 100);

for (int k = 0; k < j; k++)

{
under.setTextRise(rise);

c = waterMarkName.charAt(k);
under.showText(c +
"");
rise -= 18;

}
}
// 字体设置结束

under.endText();
// 画一个圆
//
under.ellipse(250, 450, 350, 550);
//
under.setLineWidth(1f);
// under.stroke();

}
stamper.close();
}
catch (Exception
e)
{
e.printStackTrace();
}
}

/**
* 设置中文
*
* @return Font
*/

private static Font setChineseFont()
{
BaseFont base =
null;
Font fontChinese = null;
try

{
base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
BaseFont.EMBEDDED);
fontChinese = new Font(base, 12,
Font.NORMAL);
}
catch (DocumentException e)

{
e.printStackTrace();
}
catch (IOException
e)
{
e.printStackTrace();
}

return fontChinese;
}

public static void main(String[] args)
{

generatePDFWithTxt(txtFilePath, pdfFilePath, "123", "水印文字", 16);

}
}

文章参考一些网络博客稍加修改调试,特此申明
http://hi..com/sx_python/item/15081531ad7d1bc21b96965e

❹ java怎么给word文档加水印

可以使用Free Spire.Doc for Java在word文档中添加文本水印或图片水印。Free Spire.Doc for Java下载链接:网页链接

1.添加文本水印——代码如下:

import com.spire.doc.*;

import com.spire.doc.documents.WatermarkLayout;

import java.awt.*;

public class WordTextWatermark {

public static void main(String[] args) {

Document document = new Document();

document.loadFromFile("Sample.docx");

insertTextWatermark(document.getSections().get(0));

}

private static void insertTextWatermark(Section section) {

TextWatermark txtWatermark = new TextWatermark();
txtWatermark.setText("内部使用");
txtWatermark.setFontSize(40);
txtWatermark.setColor(Color.red);
txtWatermark.setLayout(WatermarkLayout.Diagonal);
section.getDocument().setWatermark(txtWatermark);

}

}

2.添加图片水印——代码如下:

import com.spire.doc.*;

public class WordImageWatermark {

public static void main(String[] args) throws Exception{

Document document = new Document();
document.loadFromFile("Sample.docx");

PictureWatermark picture = new PictureWatermark();
picture.setPicture("logo.png");
picture.setScaling(5);
picture.isWashout(false);
document.setWatermark(picture);

document.saveToFile("out/result2.docx",FileFormat.Docx )

}

}

❺ Java上传图片到OSS怎么添加水印

首先,图片上的水印图片只能使用当前存储空间内的图片,如果没有,需要先传到当前空间内。

其次,水印图片的格式仅支持png,jpg,webp三种。

java里面上传水印,可以使用提供的sdk里面的watermark方法,这个函数有5个参数,分别是t,g,x,y,voffset.其中第一个参数表示透明度,其它参数表示位置。

当然了,它还可以指定水印文字,具体可以参考阿里云官方提供的文档,代码示例可以去github上找到对应操作的代码。

具体代码如下
// add watermark into the image
style = "image/watermark,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ";
request = new GetObjectRequest(bucketName, key);
request.setProcess(style);

阅读全文

与java添加水印相关的资料

热点内容
凌阳单片机选型 浏览:478
android手机hosts 浏览:97
路由器l2tp服务器地址是什么 浏览:160
做解压手套视频 浏览:620
退役命令文件 浏览:676
linux递归查找文件 浏览:243
哪个app上才能看到免费的名门挚爱 浏览:839
mysql查看表字段的命令 浏览:523
ios里的文件夹怎么用 浏览:166
压缩银行开户时间表 浏览:429
银行人员如何解压 浏览:829
newfile命令快捷键 浏览:569
阿里云物理服务器 浏览:955
灵狐视频app哪个好 浏览:259
大厂退役程序员自述 浏览:254
linux命令watch 浏览:889
加密币哪些平台不撤出中国 浏览:553
max加线命令 浏览:424
app胖瘦模式哪个好用 浏览:724
可以下载源码的软件 浏览:487