チュートリアル¶
目次
前提条件¶
このチュートリアルでは、 JavaEE開発モデル におけるプログラミングの方法について説明します。このチュートリアルでは、セキュリティ機能(利用するAPI は jp.co.iothe.pdfprotection パッケージ)のサンプルを作成します。このチュートリアルで作成したプログラムは、C:/temp/sample.pdf ファイルをサンプルデータとして利用しますので、サンプルデータを作成してください。このチュートリアルで作成したプログラムは、C:/temp ディレクトリにPDF ファイルを作成します。
用語解説¶
 Resin をインストールしたディレクトリを %RESIN_HOME% と略します。 Apache HTTP Server をインストールしたディレクトリを %APACHE_HOME% と略します。 Storage として使用するディレクトリを %PUBLIC_STORAGE_PATH% と略します。 Webサーバ利用時の静的コンテンツを配置するディレクトリを %WEB_PATH% と略します。s PDFメイクアップ をインストールしたディレクトリを %PDFMAKEUP% と略します。
環境¶
チュートリアルを学ぶための環境です。このドキュメント内では、ここで示す環境を前提として解説しています。
SOAPサーバ(Windows / セキュリティ機能用) 環境¶
サーバには IM-PDFCoordinator for Accel Platform が正しくインストールされ、APIが正常に動作している状態であることが前提です。サーバは Windows Server 2012 で動作しているものとして説明をします。また、Java は Oracle JDK がインストールされているものとします。
サンプルプログラムの場所(すべての機能)¶
%PDFMAKEUP%/sample/javaに機能毎のサンプルプログラムを用意しておりますので参照してください。機能別フォルダ一覧表( %PDFMAKEUP%/sample/java 直下のフォルダ群 )
No. 機能 サンプルフォルダ 1 パスワード付与 /samplesetproperty 2 パスワード解除 /samplesetproperty 3 PDFファイルの重ね合わせ /samplemerge 4 PDFファイルにすかしを挿入 /sampletrans 5 用紙サイズの変更 /sampleedit 6 PDFファイルの結合 /samplecomb 7 PDFファイルの抽出・分割 /sampleextractpage、/samplediv 8 PDFファイルの回転 /samplediv 9 PDFファイルへの印鑑付与 /sampleiod、/sampletrans 10 PDFファイルへの文字・画像付与 /sampletrans 11 PDFファイルへのしおり・リンク付与 /sampleol 12 PDFファイルへのフォーム、注釈付与 /sampleform、/samplenote 13 PDFファイルへのJavaScript挿入 /sample1 
サンプルデータの用意¶
%PDFMAKEUP%/sample/dataに機能に合わせてサンプルデータを用意しておりますので参照してください。
JSPプログラムの作成(セキュリティAPI)¶
このサンプルでは、JSPから IM-PDFCoordinator for Accel Platform の セキュリティ機能 を呼び出します。
作成した JSPファイルは、以下のフォルダに保存してください。
ファイル名 保存場所 protection.jsp %RESIN_HOME%/webapps/{アプリケーション名}/ 
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 92 93 94 95 96  | <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.text.ParseException" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="jp.co.iothe.pdfprotection.PdfProtection" %>
<%@ page import="jp.co.iothe.pdfprotection.PdfProtectionException" %>
<%@ page import="jp.co.iothe.pdfprotection.PdfProtectionFactory" %>
<%
	String	src		= "C:/temp/sample.pdf";
	String	pdf		= "C:/temp/out.pdf";
	String	outpdf		= "";
	String	message		= "";
	PdfProtection		protection	;
	int			sts		;
	String			docinfname	;
	// セキュリティ強化APIのインスタンスを生成します
	// 設定ファイルに従ってリモートまたは直接使用のインスタンスを生成します
	protection = PdfProtectionFactory.createPdfProtection();
	// 文書情報を設定します
	// このメソッドを実行しなかった場合、文書情報はすべて空になります
	protection.setDocInfo(
			"タイトル",
			"サブタイトル",
			"作成者",
			"アプリケーション",
			"キーワード"
			);
	// 標準セキュリティを設定します
	// RC4-128ビットとAES128ビットのセキュリティはどちらか片方しか付与されません(最後に実行した方が有効)
	// このメソッドを実行しなかった場合、標準セキュリティは付与されません
	if( true ) {
		System.out.println("RC4-128ビットのセキュリティ");
		// RC4-128ビットのセキュリティを設定します
		protection.setSecurity128("open", "security",
			PdfProtection.SEC128PRINT_DISABLE,
			PdfProtection.SEC128ACC_DISABLE,
			PdfProtection.SEC128COPY_DISABLE,
			PdfProtection.SEC128DOCCHANGE_DISABLE);
	}
	else {
		System.out.println(" AES128ビットのセキュリティ");
		// AES128ビットのセキュリティを設定します
		protection.setSecurityAES128("open", "security",
			PdfProtection.SEC128PRINT_DISABLE,
			PdfProtection.SEC128ACC_DISABLE,
			PdfProtection.SEC128COPY_DISABLE,
			PdfProtection.SEC128DOCCHANGE_DISABLE);
	}
	// Webに最適化するかどうかを設定します
	protection.setFastWebView(true);
	// 上記で設定した情報を元にセキュリティを強化して新しいPDFを出力します
	int result;
	if (true) {
		// 編集元PDFにセキュリティパスワードが設定されていない場合
		result = protection.outputPdf(src, pdf);
	}
	else {
		// 編集元PDFにセキュリティパスワードが設定されている場合
		result = protection.outputPdf(src, "password", pdf);
	}
	// outputPdfで発生した例外を取得します
	if (result < 0) {
		PdfProtectionException exception = protection.getException();
		message = exception.getMessage();
	}
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 //EN">
<HTML>
	<HEAD>
		<TITLE>My sample</TITLE>
	</HEAD>
	<BODY bgcolor="WhiteSmoke">
	<CENTER>
<%
	if("".equals(message)){
		out.println("<H1>SUCCESS!!</H1>");
		out.println("<H2>" + pdf + "</H2>");
	}
	else{
		out.println("<H1>FAILURE!!</H1>");
		out.println("<H2>" + message + "</H2>");
	}
%>
	</H2>
	</CENTER>
	</BODY>
<HTML>
 | 
コラム
標準セキュリティはRC4-128ビットとAES128ビットのセキュリティはどちらか片方しか付与されません。 (最後に実行した方が有効になります。)
コラム
URLのセキュリティはワイルドカード「*」が使用できます。 このセキュリティを使用する場合、標準セキュリティで転載と文書変更を許可しないよう設定してください。
コラム
有効期限のセキュリティはfromとtoのどちらか片方だけ設定することもできます。 このセキュリティを使用する場合、標準セキュリティで転載と文書変更を許可しないよう設定してください。 setSecurityDateでは、年月日までしか指定できません。
プログラム実行¶
準備¶
実行させるための準備の手順を説明します。
サンプルファイルの用意¶
- intra-mart サーバが稼動中の場合は停止状態にします。
 - 転送したクラスファイルをAppRuntime の動作するService-Platform をインストールしたディレクトリ内の doc/imart/WEB-INF/classes/myapp ディレクトリに保存してください。
 - intra-mart サーバを起動します。
 
メニュー設定¶
テナント管理者でログインし、以下のメニューを設定します。
[テナント管理]-[メニュー]画面を開きます。
フォルダを作成します。
URLに、protection.jsp を設定し、メニューを追加します。
メニュー設定は完了です。


