和其他檔案一樣,PDF文件也具有文件屬性。 這些屬性是鍵值對。 每個屬性都提供有關文件的特定資訊。
以下是PDF文件的屬性 -
編號 | 屬性 | 描述 |
---|---|---|
1 | File |
該屬性儲存檔案的名稱。 |
2 | Title |
使用此屬性,可以設定文件的標題。 |
3 | Author |
使用此屬性,可以設定文件的作者姓名。 |
4 | Subject |
使用此屬性,可以指定PDF文件的主題。 |
5 | Keywords |
使用此屬性,列出可以搜尋文件的關鍵字。 |
6 | Created |
使用此屬性,可以設定為文件修改的日期 |
7 | Application |
使用此屬性,可以設定文件的應用程式。 |
以下是PDF文件的文件屬性表的截圖。
PDFBox提供了一個名稱為PDDocumentInformation
的類。 這個類有一組setter
和getter
方法。
該類的setter
方法用於設定文件的各種屬性的值,getter
方法用於檢索這些值的。
以下是PDDocumentInformation
類的setter
方法。
編號 | 方法 | 描述 |
---|---|---|
1 | setAuthor(String author) |
此方法用於設定名為Author 的PDF文件的屬性值。 |
2 | setTitle(String title) |
此方法用於設定名為Title 的PDF文件的屬性值。 |
3 | setCreator(String creator) |
此方法用於設定名為Creator 的PDF文件的屬性值。 |
4 | setSubject(String subject) |
此方法用於設定名為Subject 的PDF文件的屬性值。 |
5 | setCreationDate(Calendar date) |
此方法用於設定名為CreationDate 的PDF文件的屬性值。 |
6 | setModificationDate(Calendar date) |
此方法用於設定名為ModificationDate 的PDF文件的屬性值。 |
7 | setKeywords(String keywords list) |
此方法用於設定名為Keywords 的PDF文件的屬性值。 |
PDFBox提供了一個名稱為PDDocumentInformation
的類,該類提供了各種方法。 這些方法可以為文件設定各種屬性並檢索它們。
本範例演示如何將諸如作者,標題,日期和主題等屬性新增到PDF文件。 在這裡,我們將建立一個名稱為doc_attributes.pdf
的PDF文件,為此pdf文件新增各種屬性,並將其儲存在路徑為:F:\worksp\pdfbox
目錄中。 將下面程式碼儲存在名稱為AddingAttributes.java
的檔案中。
package com.yiibai;
import java.io.IOException;
import java.util.Calendar;
import java.util.GregorianCalendar;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
import org.apache.pdfbox.pdmodel.PDPage;
public class AddingDocumentAttributes {
public static void main(String args[]) throws IOException {
//Creating PDF document object
PDDocument document = new PDDocument();
//Creating a blank page
PDPage blankPage = new PDPage();
//Adding the blank page to the document
document.addPage( blankPage );
//Creating the PDDocumentInformation object
PDDocumentInformation pdd = document.getDocumentInformation();
//Setting the author of the document
pdd.setAuthor("Tw511.com");
// Setting the title of the document
pdd.setTitle("一個簡單的文件標題");
//Setting the creator of the document
pdd.setCreator("PDF Examples");
//Setting the subject of the document
pdd.setSubject("文件標題");
//Setting the created date of the document
Calendar date = new GregorianCalendar();
date.set(2017, 11, 5);
pdd.setCreationDate(date);
//Setting the modified date of the document
date.set(2018, 10, 5);
pdd.setModificationDate(date);
//Setting keywords for the document
pdd.setKeywords("pdfbox, first example, my pdf");
//Saving the document
document.save("F:/worksp/pdfbox/doc_attributes.pdf");
System.out.println("Properties added successfully ");
//Closing the document
document.close();
}
}
執行時,上述程式將所有指定的屬性新增到顯示以下訊息的文件中。
Properties added successfully
現在,存取給定的路徑找到建立的PDF。 右鍵單擊文件並選擇文件屬性選項。開啟文件屬性視窗,在這裡可以觀察到文件的所有屬性都被設定為指定的值。如下所示。
使用PDDocumentInformation
類提供的getter
方法來檢索文件的屬性。
以下是PDDocumentInformation
類的getter
方法。
編號 | 方法 | 描述 |
---|---|---|
1 | getAuthor() |
此方法用於檢索名為Author 的PDF文件的屬性值。 |
2 | getTitle() |
此方法用於檢索名為Title 的PDF文件的屬性值。 |
3 | getCreator() |
此方法用於檢索名為Creator 的PDF文件的屬性值。 |
4 | getSubject() |
此方法用於檢索名為Subject 的PDF文件的屬性的值。 |
5 | getCreationDate() |
此方法用於檢索名為CreationDate 的PDF文件的屬性值。 |
6 | getModificationDate() |
此方法用於檢索名為ModificationDate 的PDF文件的屬性的值。 |
7 | getKeywords() |
此方法用於檢索名為Keywords 的PDF文件的屬性值。 |
本範例演示如何檢索現有PDF文件的屬性。 在這裡,將建立一個Java程式並載入儲存在路徑F:\worksp\pdfbox
中的名稱為doc_attributes.pdf
的PDF文件,並檢索其屬性。 將此程式碼儲存在名稱為RetrivingDocumentAttributes.java
的檔案中。
package com.yiibai;
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
public class RetrivingDocumentAttributes {
public static void main(String args[]) throws IOException {
//Loading an existing document
File file = new File("F:/worksp/pdfbox/doc_attributes.pdf");
PDDocument document = PDDocument.load(file);
//Getting the PDDocumentInformation object
PDDocumentInformation pdd = document.getDocumentInformation();
//Retrieving the info of a PDF document
System.out.println("Author of the document is :"+ pdd.getAuthor());
System.out.println("Title of the document is :"+ pdd.getTitle());
System.out.println("Subject of the document is :"+ pdd.getSubject());
System.out.println("Creator of the document is :"+ pdd.getCreator());
System.out.println("Creation date of the document is :"+ pdd.getCreationDate());
System.out.println("Modification date of the document is :"+
pdd.getModificationDate());
System.out.println("Keywords of the document are :"+ pdd.getKeywords());
//Closing the document
document.close();
}
}
執行後,上述程式將檢索文件的所有屬性並顯示它們,如下所示。
Author of the document is :Tw511.com
Title of the document is :一個簡單的文件標題
Subject of the document is :文件標題
Creator of the document is :PDF Examples
Creation date of the document is :java.util.GregorianCalendar[time=1512441059000,areFieldsSet=true,areAllFieldsSet=true,lenient=false,zone=java.util.SimpleTimeZone[id=GMT+08:00,offset=28800000,dstSavings=3600000,useDaylight=false,startYear=0,startMode=0,startMonth=0,startDay=0,startDayOfWeek=0,startTime=0,startTimeMode=0,endMode=0,endMonth=0,endDay=0,endDayOfWeek=0,endTime=0,endTimeMode=0],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2017,MONTH=11,WEEK_OF_YEAR=49,WEEK_OF_MONTH=2,DAY_OF_MONTH=5,DAY_OF_YEAR=339,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=10,HOUR_OF_DAY=10,MINUTE=30,SECOND=59,MILLISECOND=0,ZONE_OFFSET=28800000,DST_OFFSET=0]
Modification date of the document is :java.util.GregorianCalendar[time=1541385059000,areFieldsSet=true,areAllFieldsSet=true,lenient=false,zone=java.util.SimpleTimeZone[id=GMT+08:00,offset=28800000,dstSavings=3600000,useDaylight=false,startYear=0,startMode=0,startMonth=0,startDay=0,startDayOfWeek=0,startTime=0,startTimeMode=0,endMode=0,endMonth=0,endDay=0,endDayOfWeek=0,endTime=0,endTimeMode=0],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2018,MONTH=10,WEEK_OF_YEAR=45,WEEK_OF_MONTH=2,DAY_OF_MONTH=5,DAY_OF_YEAR=309,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=10,HOUR_OF_DAY=10,MINUTE=30,SECOND=59,MILLISECOND=0,ZONE_OFFSET=28800000,DST_OFFSET=0]
Keywords of the document are :pdfbox, first example, my pdf