java读取设置pdf属性信息

pom

xml 复制代码
<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.24</version>
</dependency>

读取属性

java 复制代码
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
 
import java.io.File;
import java.io.IOException;
 
public class ReadPDFProperties {
    public static void main(String[] args) {
        try {
            // 加载PDF文件
            File file = new File("example.pdf");
            PDDocument document = PDDocument.load(file);
 
            // 获取PDF文档信息
            PDDocumentInformation info = document.getDocumentInformation();
 
            // 读取属性
            String title = info.getTitle();
            String author = info.getAuthor();
            String subject = info.getSubject();
            String keywords = info.getKeywords();
            String creator = info.getCreator();
            String producer = info.getProducer();
            String creationDate = info.getCreationDate().toString();
            String modificationDate = info.getModificationDate().toString();
            String trapped = info.getTrapped();
 
            // 输出属性信息
            System.out.println("Title: " + title);
            System.out.println("Author: " + author);
            System.out.println("Subject: " + subject);
            System.out.println("Keywords: " + keywords);
            System.out.println("Creator: " + creator);
            System.out.println("Producer: " + producer);
            System.out.println("Creation Date: " + creationDate);
            System.out.println("Modification Date: " + modificationDate);
            System.out.println("Trapped: " + trapped);
 
            // 关闭文档
            document.close();
 
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

设置属性

java 复制代码
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
 
import java.io.File;
import java.io.IOException;
 
public class PDFPropertiesExample {
    public static void main(String[] args) {
        try (PDDocument document = PDDocument.load(new File("example.pdf"))) {
            PDDocumentInformation info = document.getDocumentInformation();
            
            // 设置文档属性
            info.setAuthor("作者姓名");
            info.setTitle("文档标题");
            info.setSubject("文档主题");
            
            // 可以设置更多属性,例如:
            // info.setKeywords("关键词1, 关键词2");
            // info.setCreator("创建者应用名");
            // info.setProducer("生产者应用名");
            
            // 保存属性
            document.setDocumentInformation(info);
            
            // 保存更改后的文档
            document.save("updated_example.pdf");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
相关推荐
OPEN-F5 分钟前
Python进阶教程:单元测试与代码质量
开发语言·python·单元测试
阿里嘎多学长6 分钟前
2026-08-20 GitHub 热点项目精选
开发语言·程序员·github·代码托管
野生技术架构师8 分钟前
Spring Boot 实现数据脱敏:自定义注解 + Jackson 序列化器
java·spring boot·后端
其实防守也摸鱼14 分钟前
Codex破局:前端组件秒级生成的技术文章大纲
开发语言·前端·人工智能·学习·安全·web安全
AI人工智能+电脑小能手16 分钟前
大白话说Java设计模式-28-模板方法模式(业务实战篇)
java·设计模式·模板方法模式·spring源码·订单系统·代码复用
奥莱维18 分钟前
KNX酒店方案_KNX专用线与高端酒店技术逻辑
java·服务器·前端·数据库
Logintern0926 分钟前
装饰器和洋葱模式的区分
开发语言·python·架构
工业一体机老司机27 分钟前
Linux工业一体机自启动服务配置:systemd服务单元编写与开机优化实战
java·linux·服务器
冻柠檬飞冰走茶41 分钟前
《数据结构实验指导-C++语言版》 在顺序表 list 中查找元素 x
开发语言·数据结构·c++·算法·list
Brilliantwxx41 分钟前
【C++】 高阶数据结构图(1)并查集
开发语言·数据结构·c++