java怎么给word文档加水印

java怎么给word文档加水印,第1张

可以使用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 )

}

}

通过设置页面,点击添加水印即可

通过设置页面,点击添加水印就可以,或则到“控制面板”-“打印机和传真”里面,把“adobe PDF”打印机改名为“PDF”,就可以打印成pdf了。

用过滤器,等我上线给你,不要结问题哦

package com.jc.ts.services

import java.awt.Color

import java.awt.Graphics

import java.awt.Image

import java.awt.image.BufferedImage

import java.io.FileInputStream

import java.io.FileNotFoundException

import java.io.IOException

import javax.imageio.ImageIO

import javax.servlet.http.HttpServletRequest

import javax.servlet.http.HttpServletResponse

import com.sun.image.codec.jpeg.ImageFormatException

import com.sun.image.codec.jpeg.JPEGCodec

import com.sun.image.codec.jpeg.JPEGImageEncoder

/**

*添加图片水印的服务类

* */

public class WaterMark {

/**

* @param sizeContext添加水印文字

* @param request 请求流对象

* @param request 响应流对象

* */

@SuppressWarnings("deprecation")

public static void createMarkSize(String sizeContext,HttpServletRequest request,HttpServletResponse response) {

try {

String path=request.getRealPath(request.getServletPath())

FileInputStream in=new FileInputStream(path)

Image src=ImageIO.read(in)

int w=src.getWidth(null)

int h=src.getHeight(null)

BufferedImage img=new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB)//构建画板

Graphics g=img.getGraphics()//得到画笔

g.drawImage(src,0,0,w,h,null)//把源图片写入画板

g.setColor(Color.red)

g.drawString(sizeContext,10,5) // 添加文字

g.dispose()//生成图片

JPEGImageEncoder e=JPEGCodec.createJPEGEncoder(response.getOutputStream())

e.encode(img)

response.getOutputStream().close()

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace()

} catch (ImageFormatException e) {

// TODO Auto-generated catch block

e.printStackTrace()

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

}

/**

* @param localPath 添加水印LOGO路径

* @param request 请求流对象

* @param request 响应流对象

**/

@SuppressWarnings("deprecation")

public static void createMarkLogo(String localPath,HttpServletRequest request,HttpServletResponse response) {

try {

FileInputStream file=new FileInputStream(localPath)

Image fimg=ImageIO.read(file)

int fw=fimg.getWidth(null)

int fh=fimg.getHeight(null)

String path=request.getRealPath(request.getServletPath())

FileInputStream in=new FileInputStream(path)

Image src=ImageIO.read(in)

int w=src.getWidth(null)

int h=src.getHeight(null)

BufferedImage img=new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB)//构建画板

Graphics g=img.getGraphics()//得到画笔

g.drawImage(src,0,0,w,h,null)//把原图片写入画板

g.drawImage(fimg,w-20,h-15,fw,fh,null)//把水印图片写入画板

g.dispose()//生成图片

JPEGImageEncoder e=JPEGCodec.createJPEGEncoder(response.getOutputStream())

e.encode(img)

response.getOutputStream().close()

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace()

} catch (ImageFormatException e) {

// TODO Auto-generated catch block

e.printStackTrace()

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

}

}

/**

* @param localPath 添加水印图片路径

* @param request 请求流对象

* @param request 响应流对象

* @param width 水印图片的宽度

* @param height 水印图片的长度

**/

@SuppressWarnings("deprecation")

public static void createMarkLogo(String localPath,HttpServletRequest request,HttpServletResponse response,int width,int height) {

try {

FileInputStream file=new FileInputStream(localPath)

Image fimg=ImageIO.read(file)

int fw=fimg.getWidth(null)

int fh=fimg.getHeight(null)

String path=request.getRealPath(request.getServletPath())

FileInputStream in=new FileInputStream(path)

Image src=ImageIO.read(in)

int w=src.getWidth(null)//w为你过滤图片的宽度

int h=src.getHeight(null)//h为你过滤图片的长度

BufferedImage img=new BufferedImage(w+width,h+height,BufferedImage.TYPE_INT_RGB)//构建画板(画板的宽度为两个图片之和)

Graphics g=img.getGraphics()//得到画笔

g.drawImage(src,0,0,w,h,null)//把原图片写入画板

g.drawImage(fimg,width,height,fw,fh,null)//把水印图片写入画板

g.dispose()//生成图片

JPEGImageEncoder e=JPEGCodec.createJPEGEncoder(response.getOutputStream())

e.encode(img)

response.getOutputStream().close()

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace()

} catch (ImageFormatException e) {

// TODO Auto-generated catch block

e.printStackTrace()

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

}

}

注意第三个方法的注释地方g.drawImage(fimg,width,height,fw,fh,null)根据参数你在调调(放原图下面的)

过滤器调用

package com.jc.ts.filter

import java.io.IOException

import javax.servlet.Filter

import javax.servlet.FilterChain

import javax.servlet.FilterConfig

import javax.servlet.ServletException

import javax.servlet.ServletRequest

import javax.servlet.ServletResponse

import javax.servlet.http.HttpServletRequest

import javax.servlet.http.HttpServletResponse

import com.jc.ts.services.WaterMark

public class WaterFilter implements Filter {

public void destroy() {

// TODO Auto-generated method stub

}

public void doFilter(ServletRequest arg0, ServletResponse arg1,

FilterChain arg2) throws IOException, ServletException {

HttpServletRequest request=(HttpServletRequest)arg0

HttpServletResponse response=(HttpServletResponse)arg1

//WaterMark.createMarkSize("南京ts", request, response)

//WaterMark.createMarkLogo("D:\\workspace\\mybook\\WebRoot\\images\\logo\\book.jpg", request, response)

WaterMark.createMarkLogo("D:\\workspace\\mybook\\WebRoot\\images\\logo\\book.jpg", request, response,20,30)

//注意路径为绝对路径且三个效果不能同时执行

}

public void init(FilterConfig arg0) throws ServletException {

// TODO Auto-generated method stub

}

}

web.xml配置(写在servlet上面)

<filter>

<description>This is the description of my J2EE component</description>

<display-name>This is the display name of my J2EE component</display-name>

<filter-name>WaterFilter</filter-name>

<filter-class>com.jc.ts.filter.WaterFilter</filter-class>

</filter>

希望你能满意。。。。。。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11762938.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存