java 给图片、pdf、docx、doc、wps、xlsx、xls添加水印(均测试通过)

您所在的位置:网站首页 ppt文件加水印 java 给图片、pdf、docx、doc、wps、xlsx、xls添加水印(均测试通过)

java 给图片、pdf、docx、doc、wps、xlsx、xls添加水印(均测试通过)

2024-06-16 10:04| 来源: 网络整理| 查看: 265

java 添加水印(均亲自测试通过) 前言

本地开发环境:jdk1.8 涉及jar: 1)图片:jdk自带的rt.jar 2)pdf:itextpdf-5.5.9.jar、itext-asian.jar 3)docx、doc、wps:aspectjweaver-1.9.1.jar、aspose-words-14.9.0-jdk16.jar 4)xlsx、xls、et(金山的表格格式): commons-codec-1.4.jar、 poi-3.14-20160307.jar poi-examples-3.14-20160307.jar poi-excelant-3.14-20160307.jar poi-ooxml-3.14-20160307.jar poi-ooxml-schemas-3.14-20160307.jar poi-scratchpad-3.14-20160307.jar xbean.jar 下载地址:https://pan.baidu.com/s/1iEwcOewDG-vGJLtO1NWMcQ 提取码:7df3

正文 1、给图片、pdf添加水印 package com.xxxxx.waterMark; import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JLabel; import com.itextpdf.text.DocumentException; 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; /** * itextpdf-5.5.9.jar、itext-asian.jar * @author sunshine * */ public class WaterMarkUtils { public static String filePath="C:\\Users\\sunshine\\Desktop\\工作\\waterMark\\"; /** * @param args * @throws IOException * @throws DocumentException */ public static void main(String[] args) throws DocumentException, IOException { // 1、给图片添加文字水印 WaterMarkUtils.setWaterMarkToImageByWords("sunshine", WaterMarkWordUtils.filePath+"1.jpg", WaterMarkWordUtils.filePath+"To1.jpg", 45, Color.blue); //2、PDF添加动态水印 //要输出的pdf文件 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File("C:\\Users\\sunshine\\Desktop\\工作\\waterMark\\To3.pdf"))); // 将pdf文件先加水印然后输出 WaterMarkUtils.setWaterMarkToPdfByWords(bos, "C:\\Users\\sunshine\\Desktop\\工作\\waterMark\\3.pdf", "sunshine"); } //============================================1、给图片添加文字水印================================================== /** * 图片添加文字水印 * @param logoText * @param srcImgPath * @param newImagePath * @param degree * @param color */ public static void setWaterMarkToImageByWords(String logoText, String srcImgPath,String newImagePath,Integer degree,Color color) { InputStream is = null; OutputStream os = null; try { // 1、源图片 java.awt.Image srcImg = ImageIO.read(new File(srcImgPath)); BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB); // 2、得到画笔对象 Graphics2D g = buffImg.createGraphics(); // 3、设置对线段的锯齿状边缘处理 g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR); g.drawImage(srcImg.getScaledInstance(srcImg.getWidth(null), srcImg.getHeight(null), java.awt.Image.SCALE_SMOOTH), 0, 0, null); // 4、设置水印旋转 if (null != degree) { g.rotate(Math.toRadians(degree), buffImg.getWidth()/2,buffImg.getHeight() /2); } // 5、设置水印文字颜色 g.setColor(color); // 6、设置水印文字Font g.setFont(new java.awt.Font("宋体", java.awt.Font.BOLD, buffImg.getHeight() /2)); // 7、设置水印文字透明度 g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.45f)); // 8、第一参数->设置的内容,后面两个参数->文字在图片上的坐标位置(x,y) g.drawString(logoText, buffImg.getWidth()/4 , buffImg.getHeight()/4); // 9、释放资源 g.dispose(); // 10、图片后缀 String formaName = srcImgPath.substring(srcImgPath.lastIndexOf(".")+1, srcImgPath.length()); // 11、生成图片 os = new FileOutputStream(newImagePath); ImageIO.write(buffImg, formaName, os); } catch (Exception e) { e.printStackTrace(); } finally { try { if (null != is) is.close(); } catch (Exception e)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3