PHPドライバ1.1.4[Content-Lengthが送られない不具合を修正]

PHPドライバで、cssj_ob_start_main関数を使用して変換した文書を、直接クライアントに送信する場合、元のドキュメントのサイズが大きい場合にContent-Lengthヘッダが送られない不具合がありました。

cssj_ob_start_resourceまたはcssj_ob_start_mainを使用して、パススルーでPDFをブラウザに送るアプリケーションで問題が発生する可能性があります。5月21日に続き頻繁な修正となり申し訳ございませんが、ドライバの更新をお願いいたします。

PHPドライバのダウンロードページからダウンロードしてください。

不具合の詳細

Copper PDFはPHPのoutput bufferを利用して変換元の文書をキャプチャします。以下のような手順で処理しています。

ob_start(コールバック関数, チャンクサイズ); …変換元の文書の出力… ob_end_clean(); header(“Content-Length: ファイルの大きさ”);

コールバック関数はバッファの内容をCopper PDFに送った後消去するため、ob_end_clean()が呼び出されるまでの間、本来であれば何もブラウザに送信しません。

しかし、PHPドライバ1.1.3で大きな文書を処理した場合にバッファが足りなくなる問題を回避するために、チャンクサイズを指定したところ、PHPはバッファの内容が指定したチャンクサイズに達すると、コールバック関数によりバッファの内容が削除されても、データが送信されたものとみなして、HTTPヘッダが送られた状態(headers_sent()がTRUEを返す状態)にしてしまいます(あまり好ましい動作ではなく、PHPのドキュメントにも記述がありませんが、そのような仕様になっているようです)。

PHPドライバ1.1.4では、次の通り二重にバッファリングするようにして回避しました。

ob_start(); ob_start(コールバック関数, チャンクサイズ); …変換元の文書の出力… ob_end_clean(); ob_end_clean(); header(“Content-Length: ファイルの大きさ”);

上記の場合、内側のバッファでデータ送信が行われても、外側のバッファに対して行われるので、外側のバッファが終了しない限り、クライアントに影響することはありません。

対策

ドライバ関係の不具合が起こっている状況を踏まえて、開発中のCopper PDFにドライバの負荷テストに使用するための機能を組み込み、ネットワーク越し、ローカル接続の両方で3種類のドライバの負荷テストを実施しました。

Java, Perlドライバと修正済みのPHPドライバで問題が発生しないことを確認しています。

PDF スタイル サイトの設定 横書き 縦書き 縦2段 文字 特小 小 中 大 特大 周囲余白 なし 小 大

Perlドライバ1.1.2, PHPドライバ1.1.3[環境によりドライバが応答しなくなるバグ修正]

Perlドライバ1.1.1以前、PHPドライバ1.1.2以前に、ネットワーク環境により、ドライバが応答しなくなる可能性のある問題が見つかったため対応いたしました。ローカルマシン接続の場合でも、OSによっては不定期に問題が発生する可能性があります。

またPHPドライバ1.1.2以前で、巨大なファイルを変換すると、処理が停止する問題を修正しました。

Perl, PHPドライバをお使いの方は、早めの更新をお願いいたします。不具合によりご迷惑をおかけいたしますことをお詫びいたします。

各ドライバのダウンロードページからダウンロードしてください。

PDF スタイル サイトの設定 横書き 縦書き 縦2段 文字 特小 小 中 大 特大 周囲余白 なし 小 大

Copper PDF 2.0.8をリリースしました

ラインセンスキーがインストールされていない状態では機能限定版として動作するようにしました

個人・非商用利用のためのライセンスキーは不要になりました。

Copper PDF 2.0.8をリリースしました。「Copper PDF サーバーのダウンロード」から入手してください。

以下のバグを修正しました CSS ‘widows’プロパティの綴りが’windows’になっていた。 浮動ボックスが存在するブロックで改ページ抑制が効かない。 高さを指定したボックスの前後に強制改ページがあると、次ページでボックスがページの上側にはみ出す。 絶対位置指定された画像の高さを%指定した場合に、コンテキストボックスの高さの割合にならない。 CSS level 3 の text-align-lastをサポートしました cssj-page-content関連の動作が不安定だったため、以下の仕様にしました ‘-cssj-page-content-clear’は、指定した要素が表示されるページに適用する。 ‘-cssj-page-content’が指定されたボックスは、指定した要素が空のインラインボックスと仮定して表示されるページから表示される。 PDF スタイル サイトの設定 横書き 縦書き 縦2段 文字 特小 小 中 大 特大 周囲余白 なし 小 大

Perl ドライバ1.1.1リリース

Copper PDF Perl用ドライバ 1.1.1をリリースしました。

CGI.pmを使用した際にFILENO, BINMODEメソッドが未定義であるというエラーが発生する問題を修正しました。 CGIが出力するヘッダを除去する機能を追加しました。 サンプルをstrictモードにしました。

修正版はPerlドライバのダウンロードからダウンロードしてください。

PDF スタイル サイトの設定 横書き 縦書き 縦2段 文字 特小 小 中 大 特大 周囲余白 なし 小 大

Copper PDF 2.0.7をリリースしました

Copper PDF 2.0.7をリリースしました。「Copper PDF サーバーのダウンロード」から入手してください。

HTTPアクセスのタイムアウトを指定できるようになりました “input.http.connection.timeout”で接続タイムアウト(ミリ秒)を設定できます。 “input.http.socket.timeout”でソケットタイムアウト(ミリ秒)を設定できます。 一般的なブラウザとの互換性の改善

自動レイアウトテーブル(デフォルトのテーブル、あるいは{table-layout: auto;}が指定された)のレイアウトが一般的なブラウザのレイアウトにより近くなりました。Copper PDF 2.0.6以前のテーブルレイアウトと若干の違いが発生しますのでご注意ください。

安定性の向上

30万ページ以上のインターネット上のウェブページを処理するテストを実施し、HTML, CSS文法の誤りや極端なレイアウトの指定に対しても、エラーによる停止を徹底して排除しました。

PDF スタイル サイトの設定 横書き 縦書き 縦2段 文字 特小 小 中 大 特大 周囲余白 なし 小 大

Copper PDF 2.0.6/CSSJ 1.2.11/Javaドライバ 1.0.7[高負荷時にPDFが破損するバグ修正]

高負荷時にPDFが破損する可能性がある問題を修正したCopper PDF 2.0.6/CSSJ 1.2.11をリリースしました。以下のページからそれぞれダウンロードしてください。

Copper PDFのダウンロード CSSJのダウンロード

今回見つかった問題は、PDFの相互参照表(クロスリファレンステーブル)が破損するもので、特にサイズの小さなPDFを非常な高負荷で出力する状況で不定期的に発生する可能性があるものです。申し訳ございませんが、早めのアップデートをお願いいたします。

また、Copper PDFでは他にHTMLの処理に関する9件のバグを修正しました。詳細は配布物のREADME.txtをご参照ください。

また、Javaドライバ 1.0.7をリリースしました。今回のリリースではサーバー側が強制停止した場合に、ドライバの処理が固まってしまう問題を修正しました。Javaドライバのダウンロードページからダウンロードしてください。

PDF スタイル サイトの設定 横書き 縦書き 縦2段 文字 特小 小 中 大 特大 周囲余白 なし 小 大

PukiWikiプラグイン1.3をリリースしました。

PukiWikiプラグイン・バージョン1.3をリリースしました。新しいバージョンでは、現在表示中のページを手軽にPDF化する機能や、スタイルの切り替え、暗号化機能が追加されました。

SourceForgeのダウンロードページから入手してください。

PukiWikiプラグインのマニュアルはこちらです。

PDF スタイル サイトの設定 横書き 縦書き 縦2段 文字 特小 小 中 大 特大 周囲余白 なし 小 大

Copper PDF 2.0.5をリリースしました[SVGに関係するバグフィックス]

SVG画像を含む文書を複数同時にPDF化すると、エラーにより処理が停止する問題が見つかりました。申し訳ございませんが、SVGを利用されている方はアップデートをお願いいたします。

Copper PDF 2.0.5を「Copper PDF サーバーのダウンロード」から入手してください。

PDF スタイル サイトの設定 横書き 縦書き 縦2段 文字 特小 小 中 大 特大 周囲余白 なし 小 大

Copper PDF 2.0.4をリリースしました

Copper PDF 2.0.4をリリースしました。「Copper PDF サーバーのダウンロード」から入手してください。

SVGのグラデーション塗りに対応しました。 画像出力の解像度を指定できるようにしました。

“output.image.resolution”で解像度(dpi)を指定できます。

以下のバグを修正しました。 絶対配置されたボックスの先頭でtext-indentが適用されない。 fonts.xmlのfont-dirで指定されたディレクトリ内の.otfファイルが読み込まれない。 “output.default-font-family”でクォートで囲ったフォント名が使えない。 インラインテーブルが含まれる文書でエラーになる。 インラインボックスの中にclearが指定されたボックスが存在する文書でエラーになることがある。 {list-style-position: outside;}で配置されたマーカーがリストの左マージンに入り込んでしまう。 起動直後に高負荷がかかると、OpenTypeフォントが正常に表示されなくなることがある。 colspanで結合されたセルの有るテーブルで、テーブルの幅が必要以上に大きくなることがある。 絶対配置されたボックスの中に固定配置された画像を配置すると、位置がページ基準にならない。 コメントの認識方法が一般的なブラウザと異なる場合がある。 rowspan, colspanの両方が指定されたセルが存在する固定レイアウトテーブルでセルの位置がずれる。 半角カンマやピリオドの直後で折り返しが発生する。 {windows: 0; orphans: 0;}が適用されない。 テーブルの下境界がページ境界にさしかかった場合にエラーで停止する。 テーブルセルの幅の%指定が正しく反映されない。 高さが指定され、rowspanが指定されたテーブルセルが改ページで分割されない。 IE互換モードで以下の修正をしました。 テーブルに{width: 0;}が指定されているとき自動幅でレイアウトする。 テーブルセルにoverflow: visible;を適用しない。 行末の全角スペースの修飾(text-decoration)を表示しない。 PDF スタイル サイトの設定 横書き 縦書き 縦2段 文字 特小 小 中 大 特大 周囲余白 なし 小 大

PHPドライバ1.1.2リリース

Copper PDF PHP用ドライバ 1.1.2をリリースしました。

PHPドライバでCopper PDFに接続したときに、サーバ側エラー等でCopper PDF側から接続が切断された場合にPHP側で処理が停止してしまう(プロセスがタイムアウトするまで停止する)不具合を修正しました。

修正版はPHP ドライバのダウンロードからダウンロードしてください。

PDF スタイル サイトの設定 横書き 縦書き 縦2段 文字 特小 小 中 大 特大 周囲余白 なし 小 大