NAME

CTI::DriverManager - CTI ドライバ

概要

ドキュメント変換サーバーに接続して、各種操作を行います。


SYNOPSIS

 use CTI::DriverManager;
 
 # セッションを取得する
 $uri = 'ctip://localhost:8099/';
 $session = CTI::DriverManager::get_session($uri,
         user => 'user', password => 'kappa');
 $driver = CTI::DriverManager::get_driver($session);
 $session = $driver->get_session($uri,
         user => 'user', password => 'kappa');
 # メッセージを表示する
 $session->set_message_func(sub {
         my ($code, $message, @args) = @_;
         printf "%X %s: %s\n", $code, $message, join(",", @args);
 });
 # 進行状況を表示する
 $session->set_progress_func(sub {
         my ($length, $read) = @_;
         print "[$read / $length]\n";
 });
 # バージョン情報を表示する
 print $session->get_server_info('http://www.cssj.jp/ns/ctip/version');
 # 出力先を設定する
 $session->set_output_as_stream(*STDOUT);
 $session->set_output_as_file("out.pdf");
 $session->set_output_as_directory("out", "", ".png");
 
 # プロパティを設定する
 $session->property('input.include', '**');
 
 # サーバー側で文書を取得して変換する
 $session->transcode('http://www.yahoo.co.jp/');
 # クライアント側のリソースを送る
 $session->start_resource(*STDOUT, 'test.css', mime_type => 'text/css');
 open(my $fp, '<test.css');
 while (<$fp>) {print};
 close($fp);
 $session->end_resource(*STDOUT);
 # サーバーの要求に応じてクライアント側のリソースを送る
 $session->set_resolver_func(sub {
         my ($uri, $open) = @_;
         if (-e $uri) {
             my $fp = $open->();
             open(my $rfp, "<$uri");
             while (<$rfp>) {print $fp $_};
             close($rfp);
         }
         return undef;
 });
 # クライアント側の文書を送って変換する
 $session->start_main(*STDOUT, 'main.html', mime_type => 'text/html');
 open(my $fp, '<main.html');
 while (<$fp>) {print};
 close($fp);
 $session->end_main(*STDOUT);
 
 # 初期状態に戻す
 $session->reset();
 
 # セッションを閉じる
 $session->close();

OPTIONS

get_session に渡すことが出来る、オプションは次のとおりです。

user
        ユーザーID。
password
        パスワード。

start_main, start_resource および、 set_resolver_func のコールバック関数に渡されるコールバック関数に渡すことが出来る、オプションは次のとおりです。 全てのオプションは省略可能です。

mime_type
        データのMIME-TYPE。
        
省略した場合は、自動判別されます。
encoding
        データのキャラクタ・エンコーディング。
        
省略した場合は、自動判別されます。
バイナリデータの場合は設定しても無視されます。
length
        データの予想されるバイト数。

基本的に省略して構いません。

設定しておくと、若干の処理速度の向上が期待できることと、 メインデータの場合は、set_progress_func で設定した関数に元データの長さが渡されるようになります。

ignore_header
        1だと、データからCGIの出力等のヘッダ(先頭から空行までの間)を除去する。

これは既存のCGIプログラムの出力をキャプチャして変換する場合に有効です。 省略した場合は、全ての内容が入力データとして扱われます。

作者

$Date: 2010-12-22 12:57:45 +0900 (水, 22 12 2010) $ MIYABE Tatsuhiko


get_driver

get_driver URI

指定されたURIに接続するためのドライバを返します。

パラメータ

URI
        接続先アドレス

戻り値

CTI::Driver


get_session

get_session URI [OPTIONS]

指定されたURIに接続し、セッションを返します。

パラメータ

URI
        接続先アドレス
OPTIONS
        接続オプション user => 'ユーザー名', password => 'パスワード'

戻り値

CTI::Session