Java實(shí)現(xiàn)讀取設(shè)置pdf屬性信息
Java如何讀取設(shè)置pdf屬性信息
pom
<dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>2.0.24</version> </dependency>
讀取屬性
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); // 關(guān)閉文檔 document.close(); } catch (IOException e) { e.printStackTrace(); } } }
設(shè)置屬性
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(); // 設(shè)置文檔屬性 info.setAuthor("作者姓名"); info.setTitle("文檔標(biāo)題"); info.setSubject("文檔主題"); // 可以設(shè)置更多屬性,例如: // info.setKeywords("關(guān)鍵詞1, 關(guān)鍵詞2"); // info.setCreator("創(chuàng)建者應(yīng)用名"); // info.setProducer("生產(chǎn)者應(yīng)用名"); // 保存屬性 document.setDocumentInformation(info); // 保存更改后的文檔 document.save("updated_example.pdf"); } catch (IOException e) { e.printStackTrace(); } } }
到此這篇關(guān)于Java實(shí)現(xiàn)讀取設(shè)置pdf屬性信息的文章就介紹到這了,更多相關(guān)Java讀取設(shè)置pdf屬性信息內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java面試題——詳解HashMap和Hashtable 的區(qū)別
本篇文章主要介紹了java中HashMap和Hashtable的區(qū)別,具有一定的參考價(jià)值,有需要的可以了解一下。2016-11-11Spring Boot單元測(cè)試中使用mockito框架mock掉整個(gè)RedisTemplate的示例
今天小編就為大家分享一篇關(guān)于Spring Boot單元測(cè)試中使用mockito框架mock掉整個(gè)RedisTemplate的示例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12SpringBoot?AOP?Redis實(shí)現(xiàn)延時(shí)雙刪功能實(shí)戰(zhàn)
本文主要介紹了SpringBoot?AOP?Redis實(shí)現(xiàn)延時(shí)雙刪功能實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08java:找不到符號(hào)報(bào)錯(cuò)的排錯(cuò)方案舉例
當(dāng)你使用一個(gè)未定義或未導(dǎo)入的類(lèi)時(shí),編譯器會(huì)報(bào)錯(cuò),下面這篇文章主要給大家介紹了關(guān)于java:找不到符號(hào)報(bào)錯(cuò)的排錯(cuò)方案,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01Java實(shí)現(xiàn)SSL Socket長(zhǎng)連接方式
這篇文章主要介紹了Java實(shí)現(xiàn)SSL Socket長(zhǎng)連接方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01Spring實(shí)戰(zhàn)之抽象Bean和子Bean定義與用法示例
這篇文章主要介紹了Spring實(shí)戰(zhàn)之抽象Bean和子Bean定義與用法,結(jié)合實(shí)例形式分析了Spring抽象Bean和子Bean相關(guān)配置、定義與使用操作技巧,需要的朋友可以參考下2019-11-11Mybatis之Select Count(*)的獲取返回int的值操作
這篇文章主要介紹了Mybatis之Select Count(*)的獲取返回int的值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11Netty分布式NioSocketChannel注冊(cè)到selector方法解析
這篇文章主要為大家介紹了Netty分布式源碼分析NioSocketChannel注冊(cè)到selector方法的解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03