PDFBox - 文档属性
与其他文件一样,PDF 文档也具有文档属性。这些属性是键值对。每个属性都提供有关文档的特定信息。
以下是 PDF 文档的属性 -
| 编号 | 属性及描述 | 
|---|---|
| 1 | 文件 该属性保存文件的名称。  | 
| 2 | 标题 使用此属性,您可以设置文档的标题。  | 
| 3 | 作者 使用此属性,您可以设置文档作者的姓名。  | 
| 4 | 主题 使用此属性,您可以指定 PDF 文档的主题。  | 
| 5 | 关键词 使用此属性,您可以列出我们可以用来搜索文档的关键字。  | 
| 6 | 已创建 使用此属性,您可以设置文档的创建日期。  | 
| 7 | 修改的 使用此属性,您可以设置文档的修改日期。  | 
| 8 | 应用 使用此属性,您可以设置文档的应用程序。  | 
以下是 PDF 文档的文档属性表的屏幕截图。
设置文档属性
PDFBox 为您提供了一个名为PDDocumentInformation的类。该类有一组 setter 和 getter 方法。
此类的 setter 方法用于将值设置为文档的各种属性,而 getter 方法则用于检索这些值。
以下是PDDocumentInformation类的 setter 方法。
| 编号 | 方法及说明 | 
|---|---|
| 1 | setAuthor(字符串作者) 此方法用于设置名为Author的 PDF 文档的属性值。  | 
| 2 | setTitle(字符串标题) 此方法用于设置名为Title的 PDF 文档的属性值。  | 
| 3 | setCreator(字符串创建者) 此方法用于设置名为Creator的 PDF 文档的属性值。  | 
| 4 | setSubject(字符串主题) 此方法用于设置名为“Subject”的 PDF 文档的属性值。  | 
| 5 | setCreationDate(日历日期) 此方法用于设置名为CreationDate的 PDF 文档的属性值。  | 
| 6 | setModificationDate(日历日期) 此方法用于设置名为ModificationDate的 PDF 文档的属性值。  | 
| 7 | setKeywords(字符串关键字列表) 此方法用于设置名为keywords的 PDF 文档属性的值。  | 
例子
PDFBox 提供了一个名为PDDocumentInformation 的类,该类提供了各种方法。这些方法可以为文档设置各种属性并检索它们。
此示例演示如何向 PDF 文档添加作者、标题、日期和主题等属性。在这里,我们将创建一个名为doc_attributes.pdf的 PDF 文档,为其添加各种属性,并将其保存在路径C:/PdfBox_Examples/中。将此代码保存在名为AddingAttributes.java的文件中。
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("Tutorialspoint");
       
      // Setting the title of the document
      pdd.setTitle("Sample document"); 
       
      //Setting the creator of the document 
      pdd.setCreator("PDF Examples"); 
       
      //Setting the subject of the document 
      pdd.setSubject("Example document"); 
       
      //Setting the created date of the document 
      Calendar date = new GregorianCalendar();
      date.set(2015, 11, 5); 
      pdd.setCreationDate(date);
      //Setting the modified date of the document 
      date.set(2016, 6, 5); 
      pdd.setModificationDate(date); 
       
      //Setting keywords for the document 
      pdd.setKeywords("sample, first example, my pdf"); 
 
      //Saving the document 
      document.save("C:/PdfBox_Examples/doc_attributes.pdf");
      System.out.println("Properties added successfully ");
       
      //Closing the document
      document.close();
   }
}
使用以下命令从命令提示符编译并执行保存的 Java 文件。
javac AddingAttributes.java java AddingAttributes
执行后,上述程序将所有指定的属性添加到显示以下消息的文档中。
Properties added successfully
现在,如果您访问给定路径,您可以找到在其中创建的 PDF。右键单击文档并选择文档属性选项,如下所示。
这将为您提供文档属性窗口,在这里您可以观察到文档的所有属性都设置为指定值。
检索文档属性
您可以使用PDDocumentInformation类提供的getter方法检索文档的属性。
以下是PDDocumentInformation类的 getter 方法。
| 编号 | 方法及说明 | 
|---|---|
| 1 | 获取作者() 此方法用于检索名为Author的 PDF 文档的属性值。  | 
| 2 | 获取标题() 此方法用于检索名为Title的 PDF 文档的属性值。  | 
| 3 | 获取创建者() 此方法用于检索名为Creator的 PDF 文档的属性值。  | 
| 4 | 获取主题() 此方法用于检索名为“Subject”的 PDF 文档的属性值。  | 
| 5 | 获取创建日期() 此方法用于检索名为CreationDate的 PDF 文档的属性值。  | 
| 6 | 获取修改日期() 此方法用于检索名为ModificationDate的 PDF 文档的属性值。  | 
| 7 | 获取关键字() 此方法用于检索名为keywords的 PDF 文档的属性值。  | 
例子
此示例演示如何检索现有 PDF 文档的属性。在这里,我们将创建一个 Java 程序并加载名为doc_attributes.pdf的 PDF 文档(保存在路径C:/PdfBox_Examples/中),并检索其属性。将此代码保存在名为RetrivingDocumentAttributes.java的文件中。
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("C:/PdfBox_Examples/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();        
   }  
}      
使用以下命令从命令提示符编译并执行保存的 Java 文件。
javac RetrivingDocumentAttributes.java java RetrivingDocumentAttributes
执行后,上述程序将检索文档的所有属性并显示它们,如下所示。
Author of the document is :Tutorialspoint Title of the document is :Sample document Subject of the document is :Example document Creator of the document is :PDF Examples Creation date of the document is :11/5/2015 Modification date of the document is :6/5/2016 Keywords of the document are :sample, first example, my pdf