←前へ 目次↑ 次へ→

3.4. Perlドライバ

3.4.1. 使用方法

Perl用ドライバはCopper PDF本体とは別に配布されています。 http://sourceforge.jp/projects/copper/releases/?package_id=8741 からダウンロードしてください。 アプリケーションは、codeディレクトリをライブラリパスに含め、 use CSSJ::Driver;でモジュールをインポートしてください。

3.4.2. APIの概要

ここではAPIによるアクセスの概要で説明した各手順に対応する関数を列挙します。 各関数の詳細はapidoc内のAPIドキュメントか、 オンラインのAPIドキュメントを参照してください。

サーバーへの接続・認証

エラーハンドラ・プログレスリスナの設定

出力先の設定

プロパティの設定

リソースの送信・アクセス許可

本体の送信

通信の終了

3.4.3. サンプル

Perl用インターフェースは、ファイルハンドルに対する出力をキャプチャしてサーバーに送ります。 以下の例では$session->start_mainと$session->flush_mainの間で出力されたHTMLが変換されます。

#!/usr/bin/perl
=head1 NAME

コンテンツ変換サンプル

=head2 概要

start_mainとend_mainの間の出力結果をPDFに変換します。

=cut
use lib '../code';
# ドライバのインポート
use CSSJ::Driver(create_driver_for);

# ドライバの作成
$driver = create_driver_for('localhost', 8099, 'EUC-JP');
# 接続
$session = $driver->create_session('user', 'kappa');

# Content-Lengthヘッダの送信
$session->set_content_length_func (sub {
	my $length = shift;
	print "Content-Length: $length\n\n";
	binmode(STDOUT);
});

# Content-Typeヘッダの送信
print "Content-Type: application/pdf\n";

# リソースの送信
$session->start_resource(STDOUT, 'file:/skin.css');
print << 'EOF';
  p {
  	background-color: Gray;
  }
EOF
$session->end_resource(STDOUT);

# 本体の送信
$session->start_main(STDOUT, 'file:/test.html', 'text/html', 'EUC-JP');
print << 'EOF';
<html>
  <head>
    <title>テストドキュメント</title>
    <link rel="StyleSheet" type="text/css" href="skin.css">
  </head>
  <body>
    <p>こんにちは</p>
  </body>
</html>
EOF
$session->end_main(STDOUT);

# セッションを閉じる
$session->close();

start_resource,start_mainにファイルハンドルを渡すと、 それぞれend_resource,end_mainが呼び出されるまで、 ファイルハンドルに出力されたデータをcopperdに送ります。 その間、ファイルハンドルの本来の機能(STDOUTでは標準出力にデータを送るなど)は使えなくなります。

requireで他のプログラムを呼び出すことで、他のプログラムの出力結果を変換することも出来ます。 ただし、CGIとして作成されたPerlプログラムは、HTTPヘッダを出力するため、そのままではヘッダもPDF内に表示されてしまいます。 start_resource, start_mainの最後の引数に1を設定すると、最初の空行までの間をヘッダと認識して除去します。

$session->start_main(STDOUT, 'file:/test.html', 'text/html', 'EUC-JP', 1);
require 'program.cgi';
$session->end_main(STDOUT);

←前へ 目次↑ 次へ→
Copper PDF ©2008-2011 GNN & Co.,Ltd. All rights reserved.