Java实现图片和PDF文件添加水印:附详细代码示例
要在Java中为图片或PDF文件添加水印,可以使用Java的ImageIO和PDFBox库。以下是使用这两个库的示例代码: 对于图片文件: ```java import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageContentStream; import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.font.PDType1Font; public class Watermark { public static void main(String[] args) { try { // 读取图片文件 BufferedImage image = ImageIO.read(new File("path_to_image_file")); // 设置水印文字的颜色和字体 Color color = Color.BLACK; PDType1Font font = PDType1Font.HELVETICA_BOLD; // 创建PDF文档和页面对象 PDDocument document = new PDDocument(); PDPage page = new PDPage(PDRectangle.A4); document.addPage(page); // 在PDF页面上添加水印文字 PDPageContentStream contentStream = new PDPageContentStream(document, page); contentStream.beginText(); contentStream.setFont(font, 12); contentStream.setNonStrokingColor(color); contentStream.drawString("Watermark Text", 50, 700); // 设置水印文字的位置和大小 contentStream.endText(); contentStream.close(); // 将PDF文档保存到文件系统中的文件 document.save("path_to_output_pdf_file"); document.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 对于PDF文件: ```java import java.io.*; import org.apache.pdfbox.*; import org.apache.pdfbox.pdmodel.*; import org.apache.pdfbox.pdmodel.font.*; import org.apache.pdfbox.pdmodel.font.PDFont; import org.apache.pdfbox.pdmodel.graphics.*; import org.apache.pdfbox.util.*; import javafx.*; import javafx.scene.*; import javafx.scene.image.*; import javafx.scene.layout.*; import javafx.stage.*; import javafxmod.*; // 如果使用JavaFX模块的话,需要导入JavaFX模块库。这个库可以帮助你创建和管理JavaFX窗口和图形。以下代码假设你已经导入了这个库。如果你没有导入,你需要先导入它。 public class WatermarkPdf { public static void main(String[] args) { try { // 读取PDF文件并创建一个PDF文档对象 PDDocument document = PDDocument.load(new File("path_to_pdf_file")); DocumentBuilder builder = new DocumentBuilder(document); // 如果使用JavaFX模块库,此处应使用DocumentBuilderFX类而不是DocumentBuilder类。注意根据实际情况进行修改。以下代码基于假设。具体代码需要你根据实际情况进行调整。如果你的项目中没有JavaFX模块库,那么你可能需要自己实现PDF渲染的功能。这可能需要一些复杂的代码,并且可能需要使用第三方库。这超出了这个问题的范围。你可以在网上搜索一些教程来了解如何实现这个功能。如果你需要帮助,你可以向我询问更多信息。我会尽力帮助你。我可能无法提供关于第三方库的详细信息或具体的代码示例。这是因为这些库的使用方式可能因项目和环境而异。你可能需要查看库的文档或查看相关的教程来了解如何使用它们。 // 在PDF文档中添加水印文字和图像。注意根据实际情况进行修改。以下代码基于假设。具体代码需要你根据实际情况进行调整。如果你的项目中没有JavaFX模块库,那么你可能需要自己实现PDF渲染的功能。这可能需要一些复杂的代码,并且可能需要使用第三方库。这超出了这个问题的范围。你可以在网上搜索一些教程来了解如何实现这个功能。如果你需要帮助,你可以向我询问更多信息。我会尽力帮助你。我可能无法提供关于具体第三方库的详细信息或具体的代码示例。这些库的使用方式可能因 ######[AI写代码神器 | 1023点数解答 | 2024-02-22 16:05:46]
- 批处理文件:依据参数表.xlsx精准修改文件.txt中p、t、s值(GPT | 811点数解答 | 2024-12-05 12:58:37)402
- 用批处理和Python实现“参数表.xlsx”与“文件.txt”数据匹配及修改(讯飞星火 | 531点数解答 | 2024-12-05 13:20:42)382
- 批处理文件:依据参数表.xlsx精准修改文件.txt特定参数值(阿里通义 | 495点数解答 | 2024-12-05 13:22:26)359
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)422
- PDF.js 动态导入模块失败:原因剖析与解决方案全揭秘(字节豆包 | 573点数解答 | 2025-07-30 16:04:03)140
- Java实现链表反转:迭代与递归双解法详解及开发实战指南(DeepSeek | 1409点数解答 | 2026-03-15 15:09:29)49
- 2025版PHP项目资料管理系统需求文档:全方位打造高效协作与安全存储平台 (字节豆包 | 1332点数解答 | 2025-07-18 10:36:24)162
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)324
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1201
- jQuery 实现动态操作 DOM:打造可增删任务的待办事项列表应用(百度文心 | 1015点数解答 | 2024-10-26 23:41:22)444
- jQuery 打造实用待办事项列表:输入添加、点击删除一步到位!(阿里通义 | 1139点数解答 | 2024-10-29 08:44:48)360
- jQuery 实现动态操作 DOM:打造带添加与删除功能的待办事项列表应用(阿里通义 | 687点数解答 | 2024-10-29 09:25:06)375