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,應該會看到有以下提示資訊 -