JACOBでeasyPDFを使用する

JACOBは無料のJava Java COMブリッジで、easyPDF SDKがJavaで使用可能になります。

easyPDF SDKのすべての機能は、com.bcl.easypdf namespaceの下に位置し、更に以下の機能に分割されます:

何らかの SDKファンクションがコールされる前に、easyPDFは初期化される必要があります。以下のコードを使用して easyPDFを初期化してください:
EasyPDF.initialize();
アプリケーションを終了する前にeasyPDF SDKを初期化しないことが推奨されます:
EasyPDF.uninitialize();
easyPDF SDKからスローされるすべての例外は、EasyPDFException型になります。

命名規則

弊社では、できるだけネイティブCOM APIに近いJava APIを作成しようと試みました。結果として、Javaクラス、一覧表そして機能の名前は全てCOM APIの名前と同一です。つまり、以下のようになります:

パラメータタイプ

可能なときはいつでも、弊社は、厳密に型指定されたJava APIの作成を試みました。つまり、整数パラメータはタイプintであり、文字列パラメータはタイプStringであるなど。しかしながら、COM自身はいつも強く型指定されているわけではないので、easyPDF Java APIはいくつかのルーズな型指定のパラメータを含んでいます。

  1. 任意の入力パラメータはいつもObjectとしてパスされます。
    単純に値をパスすることができ、それはObjectへ暗黙のうちに変換されます。例えば、PasswordはIPDFProcessor.GetPageCountの任意のパラメータで:
    processor.GetPageCount("c:\\input.doc", "password"); 
    
    任意のパラメータにデフォルト値を使う際には、単純にnullをパスしてください。

  2. Variant型入力パラメータはいつもObject.としてパスされます。 Variant型は変数タイプのパラメータです。単純に値をパスすることができ、それはObjectへ暗黙のうちに変換されます。例えば、IFormField.ItemのIndexパラメータは整数または文字列のいずれかになります。:
    
    IFormField field1 = document.getFormFields().getItem(0);
    IFormField field2 = document.getFormFields().getItem("Name");
    
    
  3. 入力ストリームパラメータはいつもObjectとしてパスされます。

    ストリームは、byte[]タイプの複数バイトの配列です。ストリームを受け付けるファンクションへパスした時に、そのストリームはObjectへ暗黙のうちに変換されます。例:

    
    File inputFile = new File("c:\\input.doc");
    FileInputStream inputFileStream = new FileInputStream(inputFile.getCanonicalPath());
    byte[] inputStream = new byte[(int)inputFile.length()];
    inputFileStream.read(inputStream);
    byte[] outputStream = printjob.PrintOut3(inputStream, ".xls").toSafeArray().toByteArray();
    
    
  4. 出力ストリームはVariantとしていつも戻されます。

    Variant型は、COM Variant型を取り巻くラッパーとして設計されたJACOB-特有のクラスです。Variant型はその上にある.toSafeArray().toByteArray()をコールすることによってbyte[]へ変換されることが可能です。例えば:

    
    File inputFile = new File("c:\\input.doc");
    FileInputStream inputFileStream = new FileInputStream(inputFile.getCanonicalPath());
    byte[] inputStream = new byte[(int)inputFile.length()];
    inputFileStream.read(inputStream);
    byte[] outputStream = printjob.PrintOut3(inputStream, ".xls").toSafeArray().toByteArray();
    
    
    Variantクラスのためにcom.jacob.com.*をインポートする必要がありますので、ご注意ください。

    ストリームを戻すファンクションのリストは以下のとおりです。: IPrintJob.PrintOut2, IPrintJob.PrintOut3, IPDFProcessor.MergeMem, IPDFProcessor.MergeBatchMem, IPDFProcessorHandle.CloseMem, IPDFProcessorHandle.CloseMemEncrypt, IPDFProcessorHandle.CloseMemDecrypt.

  5. 複数の出力値を戻すファンクションは、いつもVariantパラメータを使用します。

    ファンクションから受取った出力のパラメータは、COMの [アウト]パラメータと呼ばれています。

    Variant型は、COM Variant型を取り巻くラッパーとして設計されたJACOB-特有のクラスで、[アウト]パラメータも同様に取扱うことが出来ます。例えば、IPDFProcessor.GetPageSizeVarはページ幅と高さの値の両方を同時に戻します。

      
    Variant varWidth = new Variant(new Double(0.0), true);
    Variant varHeight = new Variant(new Double(0.0), true);
    processor.GetPageSizeVar(inputFileName1, 0, varWidth, varHeight);
    System.out.println(varWidth.getDouble());
    System.out.println(varHeight.getDouble());
    
    
    まず、Variantオブジェクトは適切な型で作成、初期化されなくてはいけません。GetPageSizeVarは倍精度浮動小数点型 (Double)で戻るので、新しいDouble変数をVariantにパスします。Variantコンストラクタへの第2のパラメータはtrueであるべきで、variantがby-referenceタイプであることを示しています。つまり、[アウト]パラメータが必要です。GetPageSizeVar成功後、variantをDoubleに変換するためにgetRef()メソッドが使用されます。

    もし[出力]パラメータが文字列を返すならば、Variantのコンストラクタに新しい文字列をパスし、そしてその結果を文字列に変換するためにgetString()を使用しなければいけません。

    もし[アウト]パラメータが整数を返す場合、Variantのコンストラクタに新しい整数をパスし、そしてその結果を整数に変換するためにgetInt()を使用しなければいけません。

    Variantクラスについては、com.jacob.com.*をインポートする必要がありますので、ご注意ください。

    [出力]パラメータのファンクションのリストは以下のとおりです。: IPDFProcessor.GetVersionNumber, IPDFProcessor.GetDocumentInfo, IPDFProcessor.GetPageSizeVar, IPDFProcessor.GetDigitalSignatureInformation, IPDFProcessorHandle.GetDocumentInfo, IPDFProcessorHandle.GetPageSizeVar.