PDF添加水印
pom.xml
<!--pdf添加水印--> <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>2.0.12</version> </dependency>
package get.common.util.file; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageContentStream; import org.apache.pdfbox.pdmodel.PDResources; import org.apache.pdfbox.pdmodel.font.PDFont; import org.apache.pdfbox.pdmodel.font.PDType0Font; import org.apache.pdfbox.pdmodel.graphics.state.PDExtendedGraphicsState; import org.apache.pdfbox.util.Matrix; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; public class PDF { public static void main(String[] args) { try { watermark(new File("D:\\delivery-13020210310110043..pdf")); } catch (Exception e) { e.printStackTrace(); } } public static void watermark(File file) throws Exception { //创建新pdf文件 File tmpPDF = new File("E:\\demo_" + file.getName()); //打开pdf文件 PDDocument doc = PDDocument.load(file); doc.setAllSecurityToBeRemoved(true); //遍历pdf所有页 for (PDPage page : doc.getPages()) { PDPageContentStream cs = new PDPageContentStream(doc, page, PDPageContentStream.AppendMode.APPEND, true, true); String ts = "水印水印水印"; //引入字体文件 解决中文汉字乱码问题 // PDFont font = PDType0Font.load(doc, new FileInputStream("classpath*:/static/font/Potra.otf"), true); PDFont font =PDType0Font.load(doc, new File("D:\\BagBagCn\\format\\mode.ttf")); float fontSize = 18; PDResources resources = page.getResources(); PDExtendedGraphicsState r0 = new PDExtendedGraphicsState(); // 水印透明度 r0.setNonStrokingAlphaConstant(0.1f); r0.setAlphaSourceFlag(true); cs.setGraphicsStateParameters(r0); //水印颜色 cs.setNonStrokingColor(200, 0, 0); cs.beginText(); cs.setFont(font, fontSize); //根据水印文字大小长度计算横向坐标需要渲染几次水印 float h = ts.length() * fontSize; for (int i = 0; i <= 10; i++) { // 获取旋转实例 cs.setTextMatrix(Matrix.getRotateInstance(-150, i * 100, 0)); cs.showText(ts); for (int j = 0; j < 20; j++) { cs.setTextMatrix(Matrix.getRotateInstance(-150, i * 100, j * h)); cs.showText(ts); } } cs.endText(); cs.restoreGraphicsState(); cs.close(); } doc.save(tmpPDF); } }
对pdf进行盖章/签章/数字签名
https://blog.csdn.net/tomatocc/article/details/80762507
如何用 Java 对 PDF 文件进行电子签章
https://blog.csdn.net/javasun608/article/details/79307845
本文作者:___mouM
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。
版权说明:本文版权归作者和博客园共有,欢迎转载。但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利.