HTTP/RESTインターフェースはCopper PDF 2.1.0からサポートされた、HTTPベースのインターフェースです。 高速・高機能なCTIPに比べて冗長なプロトコルですが、HTTPをベースとしているため、普通のウェブブラウザやHTTPクライアントライブラリを利用できる利点があります。
HTTP通信による処理速度の損失は、変換処理の開始・終了時に発生するものなので、数十ページ以上の文書の出力ではほとんど問題になりません。 数ページ程度の文書を繰り返し出力する場合は、処理速度はおおむね70%程度に低下します。
HTTP/RESTインターフェースはCTIP 2.0と同等の機能を備えており、実際にJava版のCTIP 2.0ドライバは、 CTIP, HTTP接続の両方で、同一のインターフェースを利用することができます。
このドキュメントでは、HTTP/RESTインターフェースの基本的な使用方法だけを解説します。
HTTP/RESTインターフェースの完全な仕様は、以下のアドレスで公開している仕様書を参照してください。
https://htmlpreview.github.io/?https://github.com/zamasoftnet/cti.java/blob/main/docs/cti-rest-v1.xhtml
HTTP/RESTインターフェースにより、Copper PDFに対して何らかの動作(アクション)の実行を要求するためには、 HTTPのGETまたはPOSTメソッドでクライアントからアクセスします。 アクションの種類は、ファイルパスにより識別されます。 処理対象文書や認証情報など、必要な情報はリクエストパラメータとして送ります。 アクションとファイルパスの対応と、使用可能なリクエストパラメータの表は以下の通りです。
| パス | リクエストパラメータ | 説明 |
|---|---|---|
| /open | rest.user rest.password rest.timeout rest.httpSession |
セッションの開始 |
| /info | rest.id rest.user rest.password rest.uri |
サーバーの情報(セッションの開始と終了を兼ねる) |
| /properties | rest.id "rest."で始まらないパラメータ |
プロパティ設定 |
| /resources | rest.id rest.uri rest.mimeType rest.encoding rest.resource rest.notFound "rest."で始まらないパラメータ |
リソース送信(プロパティ設定を兼ねる) |
| /transcode | rest.id rest.user rest.password rest.async rest.requestResource "rest."で始まらないパラメータ rest.uri rest.mimeType rest.encoding rest.resource rest.main rest.mainURI |
ドキュメント変換処理(セッションの開始と終了、プロパティ設定、リソース送信を兼ねる) |
| /messages | rest.id rest.wait |
メッセージ受信 |
| /result | rest.id rest.uri |
ドキュメント変換結果受信 |
| /abort | rest.id rest.mode |
ドキュメント変換処理の中断 |
| /reset | rest.id |
リセット |
| /close | rest.id |
セッションの終了 |
例えばlocalhostの8097ポートでドキュメント変換サーバーが動作している場合、変換処理を実行するには、 http://localhost:8097/transcode にアクセスします。
HTTP/RESTインターフェースの機能をフルに活用する場合は、openによりセッションを開始し、各種操作をした後、closeによりセッションを終了することが基本となります。 ただし、transcodeアクションは簡単な変換処理であれば1回のリクエストだけで完結できるようになっています。
リクエストパラメータは、クエリパラメータで送る方法、POSTメソッドのフォームパラメータとして送る方法(application/x-www-form-urlencoded)、 そしてmultipart/form-data形式のファイルとフォームフィールドとして送る方法があります (さらに、ファイルそのものをリクエストボディとして送る方法があります。詳細は仕様書を参照してください)。
application/x-www-form-urlencoded を使用する場合、送信できるデータの最大サイズに制限があります(190KB程度)。 そのため、アプリケーション側から変換対象のドキュメントをCopper PDFに送る場合は、なるべくmultipart/form-dataの使用を推奨します。
リクエストパラメータの意味は次の表の通りです。
| パラメータ名 | 説明 |
|---|---|
| rest.user | 認証のためのユーザー名です。 |
| rest.password | 認証のためのパスワードです。 |
| rest.timeout | セッションの最小持続時間(ミリ秒)です。 |
| rest.httpSession | trueを設定すると、クッキーによるHTTPセッション使用します。 |
| rest.id | セッションを識別するIDです。クッキーによるHTTPセッション使用する場合は不要です。 |
| rest.uri | infoアクションではサーバー情報の識別URI、resultアクションでは結果の識別URI、他のアクションでは次に送るデータの仮想URIを表します。 |
| rest.mimeType | 次に送るデータのMIME型です。 |
| rest.encoding | 次に送るデータのキャラクタ・エンコーディングです。 |
| rest.resource | リソースデータです。これはmaltipart/form-dataのファイルとして送ることもできます。 |
| rest.notFound | リソースデータの代わりに、このパラメータにtrueを設定すると、リソースが存在しないことを示します。 |
| rest.async | transcodeアクションは通常、変換結果をレスポンスとして返しますが、 このパラメータにtrueを設定すると変換結果をresultアクションにより得ることを前提に、非同期的にドキュメント変換処理を実行します。 |
| rest.requestResource | trueを設定すると、サーバーが必要なリソースをクライアントに要求するようになります。 クライアントはリソースの送信要求をmessagesアクションで確認する必要があります。 |
| rest.main | 変換対象のメインドキュメントです。これはmaltipart/form-dataのファイルとして送ることもできます。 |
| rest.mainURI | サーバーに変換対象のメインドキュメントを取得させる場合のURIです。 |
| rest.wait | メッセージの変化があるまでmessagesアクションのレスポンスを保留する場合の最大待ち時間(ミリ秒)です。 |
| rest.mode | 1であればなるべく有効なデータを出力して処理を中断し、2であればなるべく直ちに処理を中断します。 |
なお、各アクションのレスポンスの詳細は仕様書を参照してください。
ウェブブラウザからデータの変換を行う場合、最も簡単な方法は以下のフォームをHTMLファイルとして保存して (キャラクタ・エンコーディングはUTF-8にしてください)、ブラウザで表示し、「変換」ボタンを押すことです。 テキストエリアの内容(Hello world!)がPDF化されます。
]]>
アップロードしたファイルを変換することもできます。
]]>
※新しく開発されたRubyインターフェースか、実行環境としてJRubyを使う場合はJavaインターフェースを利用した方がより高速です。
Rubyではhttpclientモジュールを使うと簡単です。 以下のサンプルでは、ヒアドキュメントとして記述したHTMLを変換します。
RubyからCopper PDFを使う。