←前へ 目次↑ 次へ→

3.5. PHPドライバ1

Copper PDF 2.1.0からは、より強力な PHPドライバ バージョン2 が利用可能です。 従来のドライバもサポートされていますが、新しいドライバの使用を検討してください。

3.5.1. 使用方法

PHP用ドライバはCopper PDF本体とは別に配布されています。 http://sourceforge.jp/projects/copper/releases/?package_id=8743 からダウンロードしてください。 アプリケーションは、codeディレクトリ内のcssj_driver.phpをインクルード(require_once)してください。 PHP用ドライバではcssj_driver.php(driverパッケージ)の関数を用いてください。 他の関数は低レベルな処理をするもので、通常は必要ありません。

また、ソース中の日本語のコメントのために、ファイルはEUC-JPエンコーディングとなっています。 PHPの内部エンコーディングにEUC-JP以外を使う場合は、 asciiディレクトリの中にASCIIコードに変換したものがありますので、 そちらを利用してください。

3.5.2. APIの概要

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

サーバーへの接続・認証

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

出力先の設定

プロパティの設定

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

本体の送信

通信の終了

3.5.3. サンプル

PHP用インターフェースは、出力バッファを介してドキュメントを変換するのが特徴です。 以下の例ではcssj_ob_start_mainとcssj_ob_end_flush_mainの間に記述されたHTMLが変換されます。

<?php
require_once ('../code/cssj_driver.php');
header("Content-Type: application/pdf");

//ドライバの作成
$driver = cssj_create_driver_for('localhost', 8099);

//セッションの開始
$session = cssj_create_session($driver, 'user', 'kappa') or die('サーバーに接続できません');

//リソースの送信
cssj_ob_start_resource($session, 'file:test.css');
readfile('test.css');
cssj_ob_end_flush_resource();

//出力結果の変換の開始
cssj_ob_start_main($session, 'file:ob.html');
?>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
    <link rel="StyleSheet" type="text/css" href="test.css">
    <title>Hello CSSJ</title>
  </head>
  <body>
    <h2>ただいまの時刻</h2>
    <p><?php echo date("l dS of F Y h:i:s A") ?></p>
  </body>
</html>

<?php
//出力結果の変換の終了
cssj_ob_end_flush_main();

//セッションの終了
cssj_close($session);

?>

単純に変数から変数に変換する場合は以下のような関数を定義しておくと便利です。 実際の使用例はvar.phpを参照してください。

/**
 * 与えられたデータをPDFに変換して返します。
 * 
 * @param $session セッション
 * @param $input 元のデータ
 * @return 変換結果PDF
 */
function &toPDF(&$session, $input) {
  //出力先
  $output = '';//nullの場合標準出力となるので、必ず文字列を代入しておく必要がある
  cssj_set_output($session, $output);

  //変換
  cssj_ob_start_main($session, 'file:test.html');
  echo $input;
  cssj_ob_end_flush_main();

  //セッションの終了
  cssj_close($session);
  
  return $output;
}

3.5.4. Content-Lengthヘッダの送信

変換結果の出力先はデフォルトではクライアントにそのまま返されます。 このとき、自動的にContent-Lengthヘッダが送信されます。

それ以外の出力先を設定した場合はContent-Lengthヘッダは出力されません。 最終的にクライアントにPDFを送信する場合は、 Content-Lengthヘッダを送らないとAdobe Readerプラグインで表示されない場合がありますのでご注意ください。


←前へ 目次↑ 次へ→
Copper PDF ©2012 Zamasoft. All rights reserved.