PDFテンプレートの作り方HOWTO

概要

Copper PDFはPDF出力の元となるテンプレートをHTMLで作ることができるため、特定のソフトウェアに依存しない、既存のウェブアプリケーション開発のノウハウを流用できる、HTMLの特徴である柔軟性のあるレイアウトが可能になるという利点があります。また、サーバー側でPDFにかためてしまうため、ユーザーが使用するブラウザの違いを気にしなくてもよいということも大きな利点です。

ここでは、それらのメリットを生かしつつ、多くの人が使い慣れているオフィスアプリケーションを利用して、PDFのテンプレートを、早く、安く、簡単に作成でき、なおかつ実用的な方法をご紹介します。

テンプレート作成のためのアプリケーション

以下はそれぞれのアプリケーションをPDF出力のテンプレート作成という観点で、次の基準で3段階評価したものです(私の主観的な評価ですのでご容赦ください!)。

機能 文書の見栄えを指定する機能の豊富さです。 使いやすさ 文書の編集の簡単さです。 安定性 期待通りのHTMLファイルが得られる度合いです。 アプリケーション 機能 使いやすさ 安定性 Microsoft Office ☆☆☆ ☆☆☆ ☆☆ OpenOffice.org ☆☆☆ ☆☆☆ ☆ Google ドキュメント ☆ ☆☆☆ ☆☆☆ TinyMCE ☆☆ ☆☆ ☆☆☆

Microsoft Office(MS Office)は、事実上最も普及しているオフィスアプリケーションです。既存の文書の多くがMS Officeで作られていることと、MS Officeの操作に慣れている人が多いという利点があります。MS Officeには作成したドキュメントをHTMLとして出力する機能があります。この機能は必ずしも期待通りのHTMLを出力することが出来ず、安定性に欠けるという問題がありましたが、バージョンが新しくなるにつれ、かなり改善されました。

OpenOffice.org(OOo)は無料で使えるオフィスアプリケーションです。無料であるという魅力から、企業や公共機関でも使われ始めています。MS Officeとの互換性も考慮されており、完璧ではありませんが、MS Officeが出力したファイルを読み込むことができます。残念ながら、現状ではHTML出力機能はMS Officeより安定性に欠け、期待通りの出力結果が得られないことが多いようです。

Googleドキュメントは、ブラウザ上で動作するオフィスアプリケーションです。グーグルのアカウントを取得することで、誰でも無料で使うことが出来ます。MS Officeで作成されたドキュメントが読み込めますが、OOoに比べてもかなり機能が限られます。ただし、内部的にはHTMLベースであるためか、HTML出力に関してはほぼ確実に期待通りの結果を得ることが出来ます。Googleドキュメントには既にPDF出力機能がありますが、HTMLファイルとして出力してからCopper PDFでPDF化した方が良好なレイアウトが得られます!

TinyMCEはブラウザ上で動くHTMLエディタです。無料のオープンソースソフトウェアです。単独で使うよりは、ブログや掲示板のような、ウェブアプリケーションの組み込み用途に適しています。

今回は、MS Officeを使います。MS Officeが出力するHTMLは独特で、そのままウェブページとして公開する場合は、全てのブラウザで同様に表示できるか不安があるものですが、PDF出力に関しては問題ではありません。また、Copper PDFはInternet Explorerとの互換機能があり、MS Officeが出力するHTMLも期待通りにレイアウトできるように改良が重ねられています。

テンプレートエンジン […]

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

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

以下のバグを修正しました CTIP 2.0でクライアントがサーバーにリソースを要求するモードでリソースが存在しないと長時間固まる。 固定レイアウトテーブルで、colにspanが設定されていると、エラーで停止する。 page-contentにテーブルが含まれていると、エラーで停止する。 テーブルセル・浮動ボックス等の中に、’width’が指定されたインラインボックスが存在するとき、必要な幅が確保されない。 RESTインターフェースでメッセージに ” が含まれると、レスポンスが整形式のXMLにならない。 漢数字、全角番号付けをサポートしました

‘list-style-type’, ‘counter’でcjk-ideographic(漢数字), -cssj-decimal-full-width(全角数字)をサポートしました。

ページ方向の高さを取得できるようにしました

“output.auto-height”がtrueのとき、1806メッセージコードでページの高さ(pt単位)が通知されます。

代替画像を注釈として表示

“output.broken-image”がannotationのとき、表示できない画像の大体画像が注釈として表示されます。

AJP13プロトコルをサポートしました

HTTP/RESTインターフェースに、mod_jkによりApacheを通して接続できるようになりました。

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

Q. チェック記号を表示するには?

□の中にレが入ったチェック記号は16進ユニコードの2611であるため、この記号をサポートするフォント(MS明朝など)を埋め込み可能な状況であれば、HTML中に☑と記述することで表示出来ます。なお、対応するチェックを外したコードは&#x2610です。

チェック記号を利用できない場合は、SVGを使う方法があります。チェック記号のSVG画像と、HTMLファイルの記述例をサンプルとして用意しました。ZIPファイルに含まれるcheck.htmlをCopper PDFで変換してください。

サンプルをダウンロード

画像を文字の代わりに配置する場合は、画像に対して width: 1em; height: 1em; vertical-align: -.2em; という指定をするのがポイントです。これで画像の大きさが文字とほぼ同じ(1em)になります。また、そのままでは画像の下辺が文字のベースラインに合わされ、若干画像が上に表示されるのを、0.2em下げることで違和感がなくなるように調整します。

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

Q. 囲み文字を表示するには?

囲み文字を実現するには、SVGを利用してください。

○のSVG画像と、HTMLファイルの記述例をサンプルとして用意しました。ZIPファイルに含まれるcircle.htmlをCopper PDFで変換してください。

サンプルをダウンロード

やり方は、囲みたい文字の上に○の画像を重ねるだけです。ただし、画像を文字より若干大きくすることと、横にマイナスのマージンを指定して文字に食い込ませること、画像の位置を若干下げることがポイントです。以下のHTMLコード例をご覧ください。

亀<object style=”width: 1.2em; height: 1.2em; margin-left: -1.1em; vertical-align: -.2em;” data=”circle.svg” type=”image/svg+xml”>

widthとheightに1.2emを指定して、大きさを文字の約1.2倍としています。左側マージンに-1.1emを指定しているため、画像が左側の文字の真ん中にくるように重なります。そのままでは画像の下辺が文字のベースラインに合わさり、若干位置が高くなっているため、vertical-align: -.2em;を指定して位置を調整しています。

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

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

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

以下のバグを修正しました 改ページ直後のテーブルセルの内容が全て上付きになる。 背景色を指定したボックスの、最初の行の背景が塗りつぶされる。 以下の修正をしました。 両あわせの方法をより一般的なブラウザに近くなうように修正 sRGBカラー情報 PDFにsRGB(IEC61966-2-1)カラー情報を埋め込むようにしました。 生成されるPDFがよりブラウザに近い色合いとなります。 PDF スタイル サイトの設定 横書き 縦書き 縦2段 文字 特小 小 中 大 特大 周囲余白 なし 小 大

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

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

以下のバグを修正しました 改ページ直後のテーブルセルの内容が全て上付きになる。 背景色を指定したボックスの、最初の行の背景が塗りつぶされる。 alignが指定されたまたは絶対位置指定されたテーブルのマージンが適用されない。 overflow: hidden;が指定されたボックスAの中に浮動ボックスBを配置した場合に、ボックスAの高さが拡張されない。 以下の修正をしました。 両あわせの方法をより一般的なブラウザに近くなうように修正 ‘text-decoration’による下線、上線が行をはみ出さないように修正 PDF スタイル サイトの設定 横書き 縦書き 縦2段 文字 特小 小 中 大 特大 周囲余白 なし 小 大

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

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

rpm, debパッケージの修正 /var/lib/copper-pdf/conf から /etc/copper-pdf にシンボリックリンクを張っていたものを、 逆転させました。/etc/copper-pdf が実際の設定ファイルの場所になります。 入力データ形式 SVGと、Java実行環境のImage I/Oがサポートする画像を直接変換できるようになりました。 新しいドライバインターフェース 新しいソケット通信インターフェース(CTIP2) HTTP / HTTPSインターフェース PDF/A-1b(ISO 19005-1)をサポート 長期保存用の文書を生成できるようになりました。 sRGBカラー情報 PDFにsRGB(IEC61966-2-1)カラー情報を埋め込むようにしました。 生成されるPDFがよりブラウザに近い色合いとなります。 PDF スタイル サイトの設定 横書き 縦書き 縦2段 文字 特小 小 中 大 特大 周囲余白 なし 小 大

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

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

以下のバグを修正しました 引用符が開いていない状態で{content: close-quote;}があるとエラーにより停止する。 IMGタグで文書中に埋め込まれた画像のMIME型がimage/*でない場合表示されない。 PDF スタイル サイトの設定 横書き 縦書き 縦2段 文字 特小 小 中 大 特大 周囲余白 なし 小 大

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

PukiWikiプラグイン・バージョン1.3.2をリリースしました。文書の表題や作者を設定する機能が加えられています。

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

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

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

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

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

以下のバグを修正しました コアフォントを使用している場所で両あわせをすると、単語の途中に空白ができる。 大きなdata URLの処理などで長文のエラーメッセージが発生すると、ドライバの接続が切れる。 “output.image.resolution”のデフォルト値が72となっており、解像度が正しく反映されない。2.0.9以降では (以前の設定 × “output.resolution” / 72) で換算した値を設定してください。 文書中の処理命令で”output.resolution”を適用できない。 CSSJとの互換性のためのCSSプロパティ’-cssj-regeneratable’を使用できない。 テキスト処理の改善 コアフォントと他の種類のフォントが選択可能なとき、他の種類のフォントが優先されるようにしました。 PDFのタイムスタンプとファイルIDの設定

次の入出力プロパティでPDFのCreationDateとModDateを設定できるようになりました。 “2009-05-22 21:10:14″あるいは”2009-05-22 21:10:14 +0900″のように設定してください。

“output.pdf.meta.creation-date” “output.pdf.meta.mod-date”

次の入出力プロパティでPDFのファイルIDを設定できるようになりました。 32桁固定の16進数で設定してください。

“”output.pdf.file-id” PDF スタイル サイトの設定 横書き 縦書き 縦2段 文字 特小 小 中 大 特大 周囲余白 なし 小 大