使用pdfbox 为 PDF 增加水印

这篇具有很好参考价值的文章主要介绍了使用pdfbox 为 PDF 增加水印。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用pdfbox 为 PDF增加水印https://www.jylt.cc/#/detail?activityIndex=2&id=bd410851b0a72dad3105f9d50787f914

引入依赖

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>3.0.1</version>
</dependency>
<!--下面操作图片的时候需要用到该工具类-->
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-core</artifactId>
    <version>5.8.25</version>
</dependency>

具体代码实现

public static void main(String[] args) throws Exception {
        // 读取原始 PDF 文件
        PDDocument document = PDDocument.load(new File("/Users/a58/Downloads/test.pdf"));

        File file = new File("/Users/picture/Downloads/waterMark.png");
        BufferedOutputStream outputStream = FileUtil.getOutputStream(file);
        FileImageOutputStream fileImageOutputStream = new FileImageOutputStream(file);

	// 创建文字图片
	Font font = new Font("宋体", Font.PLAIN, 12);
        Color fontColor = new Color(100, 100, 100, 60);
        ImgUtil.createImage("水印", font, null, fontColor, fileImageOutputStream);
	// 旋转图片,使水印倾斜
        ImgUtil.rotate(file, -20, file);

        // 遍历 PDF 中的所有页面
        for (int i = 0; i < document.getNumberOfPages(); i++) {
            PDPage page = document.getPage(i);
            PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, true, true);

	    // PDF页面宽度
            float pageWidth = page.getMediaBox().getWidth();
	    // PDF页面高度
            float pageHeight = page.getMediaBox().getHeight();

	    // 4:每页有4列水印
            int xBegin = (int) (pageWidth / 4);
	    // 8:每页有8行水印
            int yBegin = (int) (pageHeight / 8);
	  
	    // 加载图片
            PDImageXObject pdImageXObject = PDImageXObject.createFromFile(file.getAbsolutePath(), document);
            float width = pdImageXObject.getWidth();
            float height = pdImageXObject.getHeight();

            for (int yIndex = 0; yIndex < 8; yIndex++) {
                for (int xIndex = 0; xIndex < 4; xIndex++) {
                    contentStream.drawImage(pdImageXObject, (xBegin * xIndex) + 5, (yBegin * yIndex), width, height);
                }
                yIndex++;
            }

            contentStream.close();
        }

        // 保存修改后的 PDF 文件
        document.save(new File("/Users/picture/Downloads/testout.pdf"));
        document.close();
        System.out.println("完成");
    }

文章来源地址https://www.toymoban.com/news/detail-802849.html

到了这里,关于使用pdfbox 为 PDF 增加水印的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于pdfbox实现的pdf添加文字水印工具

    最近有个需求需要给pdf加文字水印,于是开始搜索大法,但是发现网络上的代码基本都是将字体文件直接放在jar包里面。个人强迫症发作(手动狗头),想要像poi一样直接加载系统字体,于是研究了一下午pdfbox的源代码,发现 FontFileFinder 类可以实现这个功能。废话不多说,直

    2023年04月11日
    浏览(33)
  • java利用pdfbox动态生成PDF

    Apache PDFBox 是一个用于处理 PDF 文档的 Java 库。它提供了许多功能和方法来读取、创建、操作和提取 PDF 文档的内容。 PDDocument 类 引用源码中对PDDocument 类的描述 This is the in-memory representation of the PDF document 这是PDF文档的内存表示,在 java 程序中,你可以简单理解

    2024年02月06日
    浏览(47)
  • JAVA 实现PDF转图片(pdfbox版)

    依赖: pdf存放路径 正文开始: pdf转换多张图片、长图 展示效果: 附加:小程序预览wxml代码 依赖: pdf存放路径 正文开始: pdf转换多张图片、长图

    2024年02月06日
    浏览(49)
  • Java 利用pdfbox将图片和成到pdf指定位置

    业务背景:用户在手机APP上进行签名,前端将签完名字的图片传入后端,后端合成新的pdf. 废话不多说,上代码: 注意:前端传过来的图片必须是透明的,否则合成的时候签名处会有边框        

    2024年02月09日
    浏览(52)
  • 【Java】OpenPDF、iText、PDFBox 是三种常用的 PDF 处理库

    OpenPDF、iText、PDFBox 是三种常用的 PDF 处理库,它们各自具有独特的优势和特点,同时也存在一些局限性和差异。本文将对这四种库进行详细的比较,并通过代码示例来展示它们的使用。 1、OpenPDF OpenPDF 是一个用于创建和编辑 PDF 文档的 Java 库,它基于 iText 库的一个分支,提供

    2024年02月09日
    浏览(49)
  • C# 图片转PDF,PDF增加水印文字

    好久没写博客了,今天给大家分享一个图片转PDF的相关操作,也算是一次总结吧。 首先需要准备动态库itextsharp.dll,这个dll去网上下载,都可以下载到,C#对PDF的操作都是基于这个类库来实现的。话不多说,直接上代码。

    2024年02月09日
    浏览(42)
  • java中pdfbox处理pdf常用方法(读取、写入、合并、拆分、写文字、写图片)

    方法代码: 测试用例: 2.1写文字 方法代码: 测试用例: A.pdf: A2.pdf: 2.2写图片 方法代码: 测试用例: A.pdf: pic.jpg: A2.pdf: 方法代码: 测试用例: 方法代码: 测试用例: 引用链接: (17条消息) 使用Apache PDFBox实现拆分、合并PDF_似有风中泣的博客-CSDN博客 (17条消息) Java使用P

    2024年02月11日
    浏览(114)
  • 如何通过Java的Apache PDFBox库制作一个PDF表格模板并填充数据

    要使用Java的Apache PDFBox库制作一个PDF表格模板并填充数据,你需要遵循以下步骤: 添加依赖 :首先,确保你的项目中包含了Apache PDFBox的依赖。如果你使用Maven,可以在你的 pom.xml 文件中添加以下依赖: 创建PDF模板 :你可以使用PDFBox创建一个简单的PDF模板,或者使用其他工具

    2024年02月22日
    浏览(46)
  • java pdf加水印

    本文将Base64编码形式的pdf文件加水印,并输出完成后的pdf的Base64编码,也可以根据情况自行改动,输出其他形式的内容。 首先引入两个包  完整代码如下: 结果展示a.pdf:  

    2024年02月12日
    浏览(23)
  • Java pdf添加文字水印

    最近在开发一个项目,其中就有导出的功能,而甲方提了一个需求,要对导出的pdf加文字水印,所以我就加班了整整10分钟肝出了这个功能,既然做出来了就和大家分享一下吧,拿走不谢!!! 总共就三步,非常简单 1.导入maven依赖 2.PDF增加水印工具类 3.运行工具类下面的m

    2024年02月12日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包