JawinでeasyPDFを使用する

Jawinは無料の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 = (byte[])printjob.PrintOut3(inputStream, ".xls");
    
    
  4. 出力ストリームはObjectとしていつも戻されます。

    戻り値は確実に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 = (byte[])printjob.PrintOut3(inputStream, ".xls");
    
    
    ストリームを戻すファンクションのリストは以下のとおりです。: IPrintJob.PrintOut2, IPrintJob.PrintOut3, IPDFProcessor.MergeMem, IPDFProcessor.MergeBatchMem, IPDFProcessorHandle.CloseMem, IPDFProcessorHandle.CloseMemEncrypt, IPDFProcessorHandle.CloseMemDecrypt
  5. 複数の出力値を戻すファンクションは、いつもVariant.ByrefHolderパラメータを使用します。

    Variant.ByrefHolderは、ファンクションコールから受け取る出力値のために作られたJawin-特有のクラスです。これらはCOMのコール[アウト]パラメータです。例えば、IPDFProcessor.GetPageSizeVarはページ幅と高さの値両方を同時に戻します。

      
    Variant.ByrefHolder varWidth = new Variant.ByrefHolder(new Double(0.0));
    Variant.ByrefHolder varHeight = new Variant.ByrefHolder(new Double(0.0));
    processor.GetPageSizeVar(inputFileName1, 0, varWidth, varHeight);
    System.out.println((Double)varWidth.getRef());
    System.out.println((Double)varHeight.getRef());
    
    
    まず、Variant.ByrefHolderオブジェクトは適切な型で作成、初期化されなくてはいけません。GetPageSizeVarは倍精度浮動小数点型 (Double)で戻るので、新しいDouble変数をVariant.ByrefHolderにパスします。GetPageSizeVar成功後、getRef()メソッドがコールされ、その戻り値は適切な型、つまりこの場合Doubleにキャストされなくてはいけません。

    もし[出力]パラメータが文字列を返すならば、新しい文字列をVariant.ByrefHolderを構成しているものにパスし、そしてその結果を文字列にキャストしなければなりません。

    もし[出力]パラメータが整数を返す場合、新しい整数をVariant.ByrefHolderを構成しているものにパスし、そしてその結果を整数にキャストしなければなりません。

    詳細については、official Jawin documentationをご確認ください。

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

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