PDFBox PDF文檔中的JavaScript

在前一章中,我們學習瞭如何將圖像插入到PDF文檔中。 在本章中,將學習如何將JavaScript添加到PDF文檔。

將JavaScript添加到PDF文檔

可以使用PDActionJavaScript類將JavaScript操作添加到PDF文檔。 它代表了JavaScript操作。

以下是將JavaScript操作添加到現有PDF文檔的步驟。

第1步:加載現有的PDF文檔

使用PDDocument類的load()靜態方法加載現有的PDF文檔。 此方法接受一個文件對象作爲參數,因爲這是一個靜態方法,可以使用類名稱調用它,如下所示。

File file = new File("path of the document")
PDDocument document = PDDocument.load(file);

第2步:創建PDActionJavaScript對象

實例化PDActionJavaScript對象,如下所示。 在這個類的構造函數中,以String的形式傳遞所需的JavaScript,如下所示。

String javaScript = "app.alert( {cMsg: 'this is an example', nIcon: 3,"
   + " nType: 0,cTitle: 'PDFBox Javascript example' } );";       
PDActionJavaScript PDAjavascript = new PDActionJavaScript(javaScript);

第3步:在文檔中嵌入Javascript

如下所示將必需的字符串嵌入到PDF文檔中。

document.getDocumentCatalog().setOpenAction(PDAjavascript);

第4步:保存文檔

在添加所需內容後,使用PDDocument類的save()方法保存PDF文檔,如以下代碼塊所示。

document.save("Path");

第5步:關閉文檔

最後,使用PDDocument類的close()方法關閉文檔,如下所示。

document.close();

示例

假設有一個名稱爲sample.pdf的PDF文檔,存儲在目錄:F:\worksp\pdfbox,其空頁如下所示。

這個例子演示瞭如何在上面提到的PDF文檔中嵌入JavaScript。 在這裏,將加載sample.pdf PDF文檔並在其中嵌入JavaScript。 將此代碼保存在名稱爲AddJavaScript.java的文件中。

package com.yiibai;

import java.io.File;

import org.apache.pdfbox.pdmodel.PDDocument; 
import org.apache.pdfbox.pdmodel.interactive.action.PDActionJavaScript;

public class AddJavaScript {

   public static void main(String args[]) throws Exception {

      //Loading an existing file
      File file = new File("F:/worksp/pdfbox/sample.pdf");
      PDDocument document = PDDocument.load(file);

      String javaScript = "app.alert( {cMsg: 'this is an example', nIcon: 3,"
         + " nType: 0, cTitle: 'PDFBox Javascript example’} );";

      //Creating PDActionJavaScript object 
      PDActionJavaScript PDAjavascript = new PDActionJavaScript(javaScript);

      //Embedding java script
      document.getDocumentCatalog().setOpenAction(PDAjavascript);

      //Saving the document
      document.save( new File("F:/worksp/pdfbox/smaple-js.pdf") );
      System.out.println("Data added to the given PDF"); 

      //Closing the document
      document.close();

   }
}

執行上面示例代碼,得到以下結果 -

Data added to the given PDF

打開生成的PDF文件:smaple-js.pdf,應該會看到有以下提示信息 -

PDFBox