用户登录
用户注册

分享至

java生成带水印的word

  • 作者: Jasen_伟哥
  • 来源: 51数据库
  • 2020-04-21

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 blocke.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.2content.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.2under.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)="">

java怎么实现在线打开word时给word加水印

package com.ymo.word;import com.jacob.activeX.ActiveXComponent;import com.jacob.com.ComThread;import com.jacob.com.Dispatch;import com.jacob.com.Variant;public class TestJacobWord {private ActiveXComponent wrdCom = null;private Dispatch doc = null;private Dispatch activeDoc = null;private Dispatch docSelect = null;private Dispatch docs = null;private static TestJacobWord instance = null;private String docName = "";public static TestJacobWord getInstance() {if (instance == null) {instance = new TestJacobWord();}return instance;}private boolean initWord() {boolean flag = false;ComThread.InitSTA();wrdCom = new ActiveXComponent("word.Application");try {docs = wrdCom.getProperty("Documents").toDispatch();wrdCom.setProperty("Visible", new Variant(false));flag = true;} catch (Exception e) {flag = false;e.printStackTrace();}return flag;}private void createNewDocument() {doc = Dispatch.call(docs, "Add").toDispatch();docSelect = Dispatch.get(wrdCom, "Selection").toDispatch();}private void getActiveDoc() {activeDoc = wrdCom.getProperty("ActiveWindow").toDispatch();System.out.println(activeDoc.getProgramId());}private void openDocument(String docPath) {if (this.doc != null) {closeDocument();}this.doc = Dispatch.call(docs, "Open", docPath, new Variant(false),new Variant(false)).toDispatch();docSelect = Dispatch.get(wrdCom, "Selection").toDispatch();}private void closeDocument() {if (doc != null) {Dispatch.call(doc, "Save");Dispatch.call(doc, "Close", new Variant(true));doc = null;}}private void setImgWaterMark(String waterMarkPath) {Dispatch activePan = Dispatch.get(activeDoc, "ActivePane").toDispatch();Dispatch view = Dispatch.get(activePan, "View").toDispatch();Dispatch.put(view, "SeekView", new Variant(9));Dispatch headfooter = Dispatch.get(docSelect, "HeaderFooter").toDispatch();// 取得图形对象Dispatch shapes = Dispatch.get(headfooter, "Shapes").toDispatch();Dispatch pic = Dispatch.call(shapes, "AddPicture", waterMarkPath).toDispatch();Dispatch.call(pic, "Select");Dispatch.put(pic, "Left", new Variant(10));Dispatch.put(pic, "Top", new Variant(200));Dispatch.put(pic, "Width", new Variant(150));Dispatch.put(pic, "Height", new Variant(80));Dispatch.put(view, "SeekView", new Variant(0));}public void setTextWaterMark(String waterMarkStr) {Dispatch activePan = Dispatch.get(activeDoc, "ActivePane").toDispatch();Dispatch view = Dispatch.get(activePan, "View").toDispatch();Dispatch.put(view, "SeekView", new Variant(9));Dispatch headfooter = Dispatch.get(docSelect, "HeaderFooter").toDispatch();Dispatch shapes = Dispatch.get(headfooter, "Shapes").toDispatch();Dispatch selection = Dispatch.call(shapes, "AddTextEffect",new Variant(9), waterMarkStr, "宋体", new Variant(1),new Variant(false), new Variant(false), new Variant(0),new Variant(0)).toDispatch();Dispatch.call(selection, "Select");Dispatch shapeRange = Dispatch.get(docSelect, "ShapeRange").toDispatch();Dispatch.put(shapeRange, "Name", "PowerPlusWaterMarkObject1");Dispatch textEffect = Dispatch.get(shapeRange, "TextEffect").toDispatch();Dispatch.put(textEffect, "NormalizedHeight", new Boolean(false));Dispatch line = Dispatch.get(shapeRange, "Line").toDispatch();Dispatch.put(line, "Visible", new Boolean(false));Dispatch fill = Dispatch.get(shapeRange, "Fill").toDispatch();Dispatch.put(fill, "Visible", new Boolean(true));// 设置水印透明度Dispatch.put(fill, "Transparency", new Variant(0.5));Dispatch foreColor = Dispatch.get(fill, "ForeColor").toDispatch();Dispatch.put(foreColor, "RGB", new Variant(16711620));Dispatch.call(fill, "Solid");// 设置水印旋转Dispatch.put(shapeRange, "Rotation", new Variant(315));Dispatch.put(shapeRange, "LockAspectRatio", new Boolean(true));Dispatch.put(shapeRange, "Height", new Variant(117.0709));Dispatch.put(shapeRange, "Width", new Variant(468.2835));Dispatch.put(shapeRange, "Left", new Variant(-999995));Dispatch.put(shapeRange, "Top", new Variant(-999995));Dispatch wrapFormat = Dispatch.get(shapeRange, "WrapFormat").toDispatch();// 是否允许交叠Dispatch.put(wrapFormat, "AllowOverlap", new Variant(true));Dispatch.put(wrapFormat, "Side", new Variant(3));Dispatch.put(wrapFormat, "Type", new Variant(3));Dispatch.put(shapeRange, "RelativeHorizontalPosition", new Variant(0));Dispatch.put(shapeRange, "RelativeVerticalPosition", new Variant(0));Dispatch.put(view, "SeekView", new Variant(0));}private void clo。

java怎么实现在线打开word时给word加水印

package com.ymo.word; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.ComThread; import com.jacob.com.Dispatch; import com.jacob.com.Variant; public class TestJacobWord { private ActiveXComponent wrdCom = null; private Dispatch doc = null; private Dispatch activeDoc = null; private Dispatch docSelect = null; private Dispatch docs = null; private static TestJacobWord instance = null; private String docName = ""; public static TestJacobWord getInstance() { if (instance == null) { instance = new TestJacobWord(); } return instance; } private boolean initWord() { boolean flag = false; ComThread.InitSTA(); wrdCom = new ActiveXComponent("word.Application"); try { docs = wrdCom.getProperty("Documents").toDispatch(); wrdCom.setProperty("Visible", new Variant(false)); flag = true; } catch (Exception e) { flag = false; e.printStackTrace(); } return flag; } private void createNewDocument() { doc = Dispatch.call(docs, "Add").toDispatch(); docSelect = Dispatch.get(wrdCom, "Selection").toDispatch(); } private void getActiveDoc() { activeDoc = wrdCom.getProperty("ActiveWindow").toDispatch(); System.out.println(activeDoc.getProgramId()); } private void openDocument(String docPath) { if (this.doc != null) { closeDocument(); } this.doc = Dispatch.call(docs, "Open", docPath, new Variant(false),new Variant(false)).toDispatch(); docSelect = Dispatch.get(wrdCom, "Selection").toDispatch(); } private void closeDocument() { if (doc != null) { Dispatch.call(doc, "Save"); Dispatch.call(doc, "Close", new Variant(true)); doc = null; } } private void setImgWaterMark(String waterMarkPath) { Dispatch activePan = Dispatch.get(activeDoc, "ActivePane").toDispatch(); Dispatch view = Dispatch.get(activePan, "View").toDispatch(); Dispatch.put(view, "SeekView", new Variant(9)); Dispatch headfooter = Dispatch.get(docSelect, "HeaderFooter").toDispatch();// 取得图形对象 Dispatch shapes = Dispatch.get(headfooter, "Shapes").toDispatch(); Dispatch pic = Dispatch.call(shapes, "AddPicture", waterMarkPath).toDispatch(); Dispatch.call(pic, "Select"); Dispatch.put(pic, "Left", new Variant(10)); Dispatch.put(pic, "Top", new Variant(200)); Dispatch.put(pic, "Width", new Variant(150)); Dispatch.put(pic, "Height", new Variant(80)); Dispatch.put(view, "SeekView", new Variant(0)); } public void setTextWaterMark(String waterMarkStr) { Dispatch activePan = Dispatch.get(activeDoc, "ActivePane").toDispatch(); Dispatch view = Dispatch.get(activePan, "View").toDispatch(); Dispatch.put(view, "SeekView", new Variant(9)); Dispatch headfooter = Dispatch.get(docSelect, "HeaderFooter").toDispatch(); Dispatch shapes = Dispatch.get(headfooter, "Shapes").toDispatch(); Dispatch selection = Dispatch.call(shapes, "AddTextEffect",new Variant(9), waterMarkStr, "宋体", new Variant(1),new Variant(false), new Variant(false), new Variant(0),new Variant(0)).toDispatch(); Dispatch.call(selection, "Select"); Dispatch shapeRange = Dispatch.get(docSelect, "ShapeRange").toDispatch(); Dispatch.put(shapeRange, "Name", "PowerPlusWaterMarkObject1"); Dispatch textEffect = Dispatch.get(shapeRange, "TextEffect").toDispatch(); Dispatch.put(textEffect, "NormalizedHeight", new Boolean(false)); Dispatch line = Dispatch.get(shapeRange, "Line").toDispatch(); Dispatch.put(line, "Visible", new Boolean(false)); Dispatch fill = Dispatch.get(shapeRange, "Fill").toDispatch(); Dispatch.put(fill, "Visible", new Boolean(true));// 设置水印透明度 Dispatch.put(fill, "Transparency", new Variant(0.5)); Dispatch foreColor = Dispatch.get(fill, "ForeColor").toDispatch(); Dispatch.put(foreColor, "RGB", new Variant(16711620)); Dispatch.call(fill, "Solid");// 设置水印旋转 Dispatch.put(shapeRange, "Rotation", new Variant(315)); Dispatch.put(shapeRange, "LockAspectRatio", new Boolean(true)); Dispatch.put(shapeRange, "Height", new Variant(117.0709)); Dispatch.put(shapeRange, "Width", new Variant(468.2835)); Dispatch.put(shapeRange, "Left", new Variant(-999995)); Dispatch.put(shapeRange, "Top", new Variant(-999995)); Dispatch wrapFormat = Dispatch.get(shapeRange, "WrapFormat").toDispatch();// 是否允许交叠 Dispatch.put(wrapFormat, "AllowOverlap", new Variant(true)); Dispatch.put(wrapFormat, "Side", new Variant(3)); Dispatch.put(wrapFormat, "Type", new Variant(3)); Dispatch.put(shapeRange, "RelativeHorizontalPositi on", new Variant(0)); Dispatch.put(shapeRange, "RelativeVerticalPosition", new Variant(0)); Dispatch.put。

java 给图片加文字水印

用过滤器,等我上线给你,不要结问题哦 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);根据参数你在调调(放。

转载请注明出处51数据库 » java生成带水印的word

软件
前端设计
程序设计
Java相关