Copper PDF 文書変換サーバーに接続するためのRubyドライバです。
バージョン 2.2.1
使用方法は付属のAPIドキュメント、サンプルプログラム、以下のオンラインマニュアルを参照してください。
http://dl.cssj.jp/docs/copper/3.2/html/3424_ctip2_ruby.html
- オンライン (RDoc): https://zamasoftnet.github.io/cti.ruby/
- Ruby 1.8.7以降
Gemfile に以下を追加してください。
gem 'copper-cti', '~> 2.2'開発版を GitHub から直接入れる場合:
gem 'copper-cti', git: 'https://github.com/zamasoftnet/cti.ruby.git'その後 bundle install を実行します。
bundle installインストール後は通常通りモジュールを使用できます。
require 'CTI'RubyGems.org に公開しています(https://rubygems.org/gems/copper-cti)。
gem install copper-cti開発版を GitHub から直接入れる場合:
gem install specific_install
gem specific_install https://github.com/zamasoftnet/cti.ruby.gitsrc/code/ ディレクトリをプロジェクトにコピーし、$LOAD_PATH に追加してください。
$LOAD_PATH.unshift('/path/to/src/code')
require 'CTI'ctips://ホスト名:ポート/ を指定すると TLS で接続します。SNI を送り、サーバー証明書と
ホスト名を既定で検証します(2.2.0 以降)。自己署名や独自の認証局の証明書は、環境変数
SSL_CERT_FILE に証明書ファイルを指定するなどして OpenSSL に信頼させてください。
試験用に検証を省くには、オプションに 'insecure' => true を渡します(2.2.1 以降。
本番では使わないでください)。
session = CTI.get_session('ctips://localhost:8094/', {
'user' => 'user', 'password' => 'kappa', 'insecure' => true
})Copper PDF 3.2 のサーバー自身の TLS 待受(copperd.properties の jp.cssj.cssjd.tls.port)と、
TLS を終端する中継の先にあるサーバーの両方で確認しています。
require 'CTI/Session'
require 'CTI/Driver'
driver = CTI::Driver.new
session = driver.get_session('ctip://localhost:8099/', {
'user' => 'user',
'password' => 'kappa'
})
begin
session.set_output_as_file('output.pdf')
# CSSリソースを送信
out = session.resource('test.css')
File.open('data/test.css', 'rb') { |f| CTI::copy_stream(f, out) }
out.close
# HTML文書を変換
out = session.transcode('test.html')
File.open('data/test.html', 'rb') { |f| CTI::copy_stream(f, out) }
out.close
ensure
session.close
end| メソッド | 説明 |
|---|---|
get_server_info(uri) |
サーバー情報を取得 |
set_output_as_file(file) |
変換結果の出力先ファイル名を指定 |
set_output_as_directory(dir, prefix, suffix) |
変換結果の出力先ディレクトリ名を指定 |
set_output_as_stream(out) |
変換結果の出力先IOオブジェクトを指定 |
set_results(results) |
変換結果の出力先Resultsオブジェクトを指定 |
property(name, value) |
プロパティを設定 |
resource(uri, opts, &block) |
リソースを送信 |
transcode(uri, opts, &block) |
変換対象の文書を送信し変換を実行 |
transcode_server(uri) |
サーバー側リソースを変換 |
receive_message(&block) |
メッセージ受信のためのブロックを設定 |
receive_progress(&block) |
進行状況受信のためのブロックを設定 |
resolver(&block) |
リソース解決のためのブロックを設定 |
set_continuous(continuous) |
複数結果の結合モードを切り替え |
join |
結果を結合 |
abort(mode) |
変換処理の中断を要求 |
reset |
全ての状態をリセット |
close |
セッションを閉じる |
| メソッド | 説明 |
|---|---|
CTI::get_session(uri, options, &block) |
指定されたURIに接続しセッションを返す |
CTI::get_driver(uri) |
指定されたURIに接続するためのドライバを返す |
CTI::copy_stream(inp, out) |
ストリーム間のデータコピー |
テストの実行にはCopper PDFサーバーが稼働している必要があります。
接続先は環境変数で指定できます(既定: localhost:8099 / user / kappa)。
テスト実行は minitest のユニットで、サーバー未接続時は自動的にスキップします。
ruby -Isrc/code src/test/test_driver.rbAnt から実行する場合は cti.ruby 配下で以下を実行してください。
ant testAPIドキュメントはRDocで生成されます。Antの rdoc ターゲットを実行してください。
ant rdocbuild/ruby/apidoc ディレクトリにHTMLドキュメントが生成されます。
Copyright (c) 2013-2022 Zamasoft.
Apache License Version 2.0に基づいてライセンスされます。 あなたがこのファイルを使用するためには、本ライセンスに従わなければなりません。 本ライセンスのコピーは下記の場所から入手できます。
http://www.apache.org/licenses/LICENSE-2.0
適用される法律または書面での同意によって命じられない限り、 本ライセンスに基づいて頒布されるソフトウェアは、明示黙示を問わず、 いかなる保証も条件もなしに「現状のまま」頒布されます。 本ライセンスでの権利と制限を規定した文言については、本ライセンスを参照してください。
Copyright (c) 2013-2022 Zamasoft.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
- 試験用に証明書の検証を省くオプションを追加しました。
get_sessionの オプションに'insecure' => trueを渡すと、自己署名の証明書でも接続します (本番では使わないでください。相手が誰かを確かめないまま話すことになります)。 他言語版の Java--insecure、.NET?insecure=1、Node.jsrejectUnauthorized: falseに相当します。
- **
ctips:が使えるようになりました。**従来は接続の途中でundefined method 'nonblock='が起きて必ず失敗していました。 - **サーバー証明書を検証し、SNI を送るようにしました。**従来は 検証を一切しておらず、TLS を張っても相手が誰かを確かめていませんでした。
- Windows/Cygwin 環境でバイナリファイルをテキストモードで書き込むバグを修正。
- Ruby 3に対応。FileUtilsまたはIOのcopy_streamではなくCTI::copy_streamを使用。
- 最初のリリース。