スクリプトから javaプログラムを実行する方法

概要

 スクリプトからjavaプログラムを実行する方法を例をあげてご紹介いたします。

完成形のスクリプトは以下のようなイメージとなります。

以下手順について詳述します。

設定手順

1.Javaプログラム作成

Javaプログラムファイルを作成してください。

SkyOnDemandのJavaで実行するため Java6以上 にて実装してください。

 

SAMPLE

PDFファイルのページサイズとページ数を返すプログラムです。
import java.io.FileInputStream;
import java.util.List;

import org.apache.pdfbox.pdfparser.PDFParser;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.common.PDRectangle;

public class PdfInfoGetter {

    /**
     * PDFのサイズ(大きさ)を返します。
     * ※Apache PDFBoxライブラリを使用しています。
     *
     * @param args
     *            0:PDFのファイルパス
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        if (args.length != 1) {
            throw new Exception("引数が正しくありません。");
        }
        String width = "0";//幅
        String height = "0";//高さ
        int pageCount = 0;//ページ数
        int pageRotation = 0;// 縦横

        FileInputStream fs = null;

        String pdfFilePath = args[0];
        try {
            fs = new FileInputStream(pdfFilePath);
            PDFParser pdfParser = new PDFParser(fs);
            pdfParser.parse();
            PDDocument pdf = pdfParser.getPDDocument();
            List<PDPage> allPages = pdf.getDocumentCatalog().getAllPages();
            // 1ページ目のみ出力します。
            pageCount = allPages.size();
            if (allPages.size() > 0) {
                PDPage page = allPages.get(0);
                // 縦横混合のPDFの場合getRotationがNullとなる。
                try {
                    pageRotation = page.getRotation().intValue();
                } catch (Exception e) {
                    // 取得できないため縦横混合の場合は-1とする。
                    pageRotation = -1;
                }
                PDRectangle pdRectangle = page.getMediaBox();
                width = String.valueOf(pdRectangle.getWidth());
                height = String.valueOf(pdRectangle.getHeight());
            }
        } finally {
            if (fs != null) {
                fs.close();
            }
        }
        // //PDFサイズをScriptで取得するため
        System.out.print("WIDTH=" + width + ":HEIGHT=" + height + ":PAGE_COUNT=" + pageCount + ":PAGE_ROTATION=" + pageRotation);
    }
}

 

 

2.ファイルをdataフォルダに配置

配置するファイル

  1. Javaプログラム(classファイル)
  2. 使用ライブラリ
  3. 実行するためのshファイル

shファイルの内容

  • 使用ライブラリのクラスパス指定をします。
  • SkyOnDemandのJavaプログラムと実行するクラスを指定します。($1は引数)

    JavaのファイルパスやJavaのバージョンが今後変わる可能性がございます。
    SkOnDemandバージョンアップの都度動作検証を行ってください。

     



SkyOnDemand WebStudioのエクスプローラにて、shファイルの編集を行わないでください。

ローカルのテキストエディタで編集してエンコードを「UTF-8」で保存したファイルをアップロードしてください。

 

 

3.スクリプトから実行

外部アプリケーションアイコンの設定[必須設定]

プロパティ名備考
起動コマンドsh 
起動引数

shファイル引数

 

 

外部アプリケーションアイコンの設定 [実行設定]

プロパティ名備考
作業ディレクトリ/usr/local/dataspider/server/data/pdf/ 
外部アプリケーションが終了するまで待つtrue 
戻り値が0ではない場合にはエラーとするtrue 
標準出力・標準エラー出力を取得するtrue 

 

 

外部アプリケーションのコンポーネント変数から結果を取得します。

コンポーネント変数名説明
exitValueコマンドのステータス
stdout標準出力値
stderr標準エラー出力値

文字列操作のロジックアイコンにて必要な値を抽出します。

取得結果例

以下のように値が取得されます。

注意事項

上記の記載内容は、あくまで一例となります。

SkyOnDemandの各種アダプタ機能だけでは実現できない要件などがあった際は、対応案の1つとしてご検討いただければ幸いです。