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();
        }
    }
}
相关推荐
How_doyou_do17 分钟前
数据传输优化-异步不阻塞处理增强首屏体验
开发语言·前端·javascript
jingfeng51433 分钟前
C++11可变参数模板、emplace系列接口、包装器
开发语言·c++
云天徽上35 分钟前
【数据可视化-107】2025年1-7月全国出口总额Top 10省市数据分析:用Python和Pyecharts打造炫酷可视化大屏
开发语言·python·信息可视化·数据挖掘·数据分析·pyecharts
Tina表姐43 分钟前
(C题|NIPT 的时点选择与胎儿的异常判定)2025年高教杯全国大学生数学建模国赛解题思路|完整代码论文集合
c语言·开发语言·数学建模
seabirdssss1 小时前
使用Spring Boot DevTools快速重启功能
java·spring boot·后端
喂完待续1 小时前
【序列晋升】29 Spring Cloud Task 微服务架构下的轻量级任务调度框架
java·spring·spring cloud·云原生·架构·big data·序列晋升
benben0441 小时前
ReAct模式解读
java·ai
轮到我狗叫了2 小时前
牛客.小红的子串牛客.kotori和抽卡牛客.循环汉诺塔牛客.ruby和薯条
java·开发语言·算法
yudiandian20142 小时前
【QT 5.12.12 下载 Windows 版本】
开发语言·qt
高山有多高2 小时前
详解文件操作
c语言·开发语言·数据库·c++·算法