XSL FormatterでPDF用紙に差し込み印刷

更新日: 2007/02/20

XSL FormatterでPDF用紙に差し込み印刷

XSL Formatterを使って、雛形PDF (PDF用紙) に差し込み印刷をすることができます。このWebページでは、そのための方法を簡単に解説するとともに、簡単なサンプルを作ってみました。

仕組み

最初にその仕組みを説明します。XSL Formatterでは、ページの背景(または、ページの一部)として出来合いのPDFを取り込む機能があります。そこで、雛形のPDF作成し、それをページの背景として使用し、背景の上に配置するデータを、差し込みデータとしてFOで作成します。そのFOをXSL Formatterで組版することで雛形PDFにデータを差し込みした結果から新しいPDFを作成することができます。

img/Sasikomi-Chart.PNG

雛形のPDF

雛形のPDFは、どんなものでも構いません。但し、編集禁止にはしないでください。現在のXSL Formatterは編集禁止のPDFを雛形に使って差込印刷することができません。

XSL-FOをどう作るか

このようなXSL-FOの作り方は、普通のドキュメントの組版とはちょっと違っています。そこで以下にそのポイントを説明します。

XSL-FOの仕様では、ページをfo:simple-page-masterを使って設計します。そのページ全面に雛形のPDFを背景として表示するには、まず、雛形のPDFを、fo:simple-page-masterオブジェクトのaxf:background-image属性の値として指定してください。実際の例は、次のようになります。

<fo:simple-page-master 
 master-name="main" 
 page-width="254mm" 
 page-height="190.5mm" 
 axf:background-image="Template.pdf"
 axf:background-repeat="paginate"
>

上の例では、縦190.5mm、横254mmのページを使います。その全面にTemplate.pdfを背景として表示します。

差し込みデータを、fo:page-sequenceの下位のfo:flowオブジェクトの下に配置します。

差し込みデータは、大抵の場合、ページの中で絶対位置を指定して配置されることになるでしょう。そのためには、差し込みデータを、fo:block-containerというコンテナオブジェクトの中に含め、コンテナオブジェクトにabsolute-position="absolute"の属性を指定し、さらleft, right, top, bottom属性でコンテナの絶対位置を指定します。

<fo:block-container 
  absolute-position="absolute" 
  left="10mm" 
  right="30mm" 
  top="50mm" 
  bottom="20mm" 
  background-color="yellow"
>

上の例では、コンテナオブジェクトの位置は、親のオブジェクトから左辺10mm、上辺50mm、右辺30mm、下辺20mmの位置に配置しています。この場合、親オブジェクトは、ページの本文領域(fo:region-body)であることに注意してください。

もし、差し込み結果のPDFを幾つかのPDFに分割したいときは、次の方法でできます。

サンプル

次に簡単なサンプルFOと雛形PDFを用意しました。XSL Formatter V4でお試しいただけます。

XSL Formatterを起動して、ドキュメント・スタイルシートの指定ダイヤログに次のように入力すると組版結果を確かめることができます。

http://www.antenna.co.jp/pdf/reference/SasikomiPDF.fo
img/Sashikomi-Open.PNG

サーバサイドでの利用

XSL Formatterは、サーバ上で使用することもできます。差し込みしたいPDFを用意し、FOをサーバ上でダイナミックに作成して、XSL Formatterのサーバライセンスをお使いただければ、簡単に、サーバ上でPDFに差し込み印刷する帳票システムを構築できます。

参考資料


Copyright © 1996-2013 Antenna House, Inc. All right reserved.
Antenna House is a trademark of Antenna House, Inc.