スクリプトから 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フォルダに配置
配置するファイル
Javaプログラム(classファイル)
使用ライブラリ
実行するための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つとしてご検討いただければ幸いです。