プログラミング¶
目次
動作概念¶
通常の JavaEE開発モデル ・ スクリプト開発モデル プログラムは、ApplicationRuntime で実行されます。IM-PDFCoordinator for Accel Platform で提供されるAPI も、ApplicationRuntime で動作します。詳しくは、APIリストをご覧ください。
APIの種類と性質¶
IM-PDFCoordinator for Accel Platform は、JavaEE開発モデル で利用可能なJava-API(クラス)を用意しています。そのため、 スクリプト開発モデル で IM-PDFCoordinator for Accel Platform を利用する場合は、スクリプト開発モデル のソースコード内でJavaのクラスを呼んでください。スクリプト開発モデル 内でのJavaのクラスの呼び出し方法については、 intra-mart Accel Platform のマニュアルを参照ください。
プログラム開発における注意点¶
PDFファイルへのアクセス¶
IM-PDFCoordinator for Accel Platform が提供するAPIで加工・編集前後のファイルのパスを指定する際には、AppRuntimeからアクセス可能なパスを指定してください。加工・編集するPDFファイルのサイズによっては、ネットワーク、APIのレスポンス、PDFファイルの編集が完全に終了するタイミングが大きく異なる場合があります。特にサイズの大きいPDFファイルを加工・編集する場合は、十分な時間が経過した後に加工・編集したPDF ファイルにアクセスするようにしてください。
PDFファイルの事前チェック¶
外部から不特定のPDFファイルが投入されるシステムでは、サーバの安定運用の点からPDFファイルの事前チェックを推奨します。これは、PDFファイルに問題がないかチェックをすることで、サーバに害を与えるPDFファイルを事前にはじくことが目的です。以下のサンプルでは、PDF結合処理を実行し正常終了するか確認をしています。PDF事前チェックを exe で処理するのは、何か問題が発生した際に影響範囲をこのプロセス内に抑えるためです。以下にサンプルを記載します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
/**
* PDFファイルの結合処理を実行し、元ファイルに問題があるか判定します。
* サーバに悪影響を与えるファイルを事前にはじくことが目的です。
* 本ソースは、利用方法の説明のためのサンプルですのでサポート対象です。
* @version 1.0
*/
public class pdfcheck {
/**
* ypdfcomb.exeを実行して元ファイルに問題があるかどうかチェックします。
* @param infile 元ファイル
* @param outfile 出力ファイル
* @param pwd パスワード
* @throws Exception エラー
*/
public static void execute(String infile, String outfile, String pwd) throws Exception {
List<String> command = getCommandList(infile, outfile, pwd);
try {
ProcessBuilder pb = new ProcessBuilder(command);
// 標準エラーを標準出力にマージ
pb.redirectErrorStream(true);
Process p = pb.start();
InputStream is = null;
InputStreamReader sr = null;
BufferedReader br = null;
try {
is = p.getInputStream();
sr = new InputStreamReader(is);
br = new BufferedReader(sr);
String line;
StringBuilder message = new StringBuilder();
while ((line = br.readLine()) != null) {
message.append(line);
}
if (p.waitFor() != 0) {
throw new Exception(message.toString());
}
}
finally {
br.close();
sr.close();
is.close();
// 本来はチェックしたPDFファイルの削除が必要
}
}
catch (IOException e) {
throw new Exception(e.getMessage());
}
}
/**
* 実行用のコマンドを返す。
* @param infile 元ファイル
* @param outfile 出力ファイル
* @param pwd パスワード
* @return コマンド
*/
private static List<String> getCommandList(String infile, String outfile,
String pwd) {
List<String> command = new ArrayList<String>();
command.add("ypdfcomb");
command.add("-se");
command.add("y");
command.add("-o");
command.add(outfile);
command.add("-temp");
command.add(".");
command.add("-i");
command.add(infile);
return command;
}
/**
* サンプル実行
*/
public static void main (String[] args) throws Exception{
pdfcheck.execute("C:/temp/in.pdf", "C:/temp/out.pdf", null);
}
}
|
エディット機能 の文字追記を Linux 環境で使用する際の注意点¶
Linux 環境で エディット機能 の文字追記を使用する場合は、MS932( Shift_JIS )の文字コードを設定する必要があります。
// 出力先インスタンス作成
pmudst dst = new pmudst();
// テキストオブジェクト生成
pmuobjtext textobj = dst.createobjtext();
//----------------------------------
// Linux環境では文字コード指定が必須
//----------------------------------
textobj.m_encode = "MS932";
// 文字列を追記
sts = text.setstring("これはサンプルです。");
注意
Linux 環境での文字追記には制限事項があります。次を確認してください。
- 文字コードの指定はテキストオブジェクト(createobjtextメソッドで生成)に適用してください。
- m_encode には必ず “MS932” を指定してください。
- 追記する文字(setstringメソッドで指定)は文字コード MS932( Shift_JIS )で扱えるもののみとしてください。
体験版ライセンスにおける注意点¶
試用版ライセンスでご利用のお客様は、30~60 日間の試用期間が終了するとAPIが自動的に利用できない状態となります。この状態でAPIを利用したプログラムを実行した場合に、実行時エラーとなります。その場合は、正規の製品ライセンスを購入いただき、アンインストール後に再インストールしてください。アンインストール・再インストールの方法は、インストールマニュアルをご確認ください。