Apache FOP」タグのアーカイブ

バーコード付きPDFの作成   Leave a comment

1.Barcode4Jの紹介
Barcode4Jは、Javaで実装されたオープンソースのバーコード生成ソフトです。 次の様式のバーコードが出力できます。Interleaved 2 of 5、ITF-14、Code 39、Code 128、Codabar、UPC-A、UPC-E、EAN-13、EAN-8、POSTNET、Royal Mail Customer Barcode、USPS Intelligent Mail、PDF417、DataMatrix、DataMatrix、QR Code。またSVG、EPS、PNG、JPEGなどの画像データに出力できます。Apache FOPの可能性と日本語設定のブログ記事にて、コンビニ請求書の例があります。またApache FOP、Barcode4j および ZXing を使用したQRコード付きPDFについては、Apache FOP、Barcode4j および ZXing を使用して、QRコード付きPDFファイルを生成する方法(日本語可能)のブログ記事にて掲載しています。

2.Apache FOPとの連携
Barcode4JをApache FOPのアドオンとして使用することにより、簡単にバーコードをPDFに出力できます。barcode4j.jarと、barcode4j-fop-ext.jarをクラスパスに追加します(ダウンロードサイトにあるbarcode4j-2.1.0-bin.zipに含まれています)。

3.XSL-FO文書への組み込み方
17行目のfo:instream-foreign-object要素下位に、Barcode4Jの独自の要素を追加します。名前空間は、http://barcode4j.krysalis.org/nsです。
18行目のbarcode要素のmessage属性で、バーコードの値を設定します。barcode要素の次は、バーコードの種類に対応した要素が出現します。下記の例の場合は、ean-128要素です。human-readable要素の子要素であるパターンpattern要素で目視文字の出力フォーマットを指定します。template要素では、AI、チェックディ ジットの計算方法とバーコードの内容(数字、英字の桁数)を指定します。AIは括弧でくくります。nは、数字、cdはチェックディ ジットを示します。cd0は チェックディ ジットの計算にAIを含む場合に使用します。template要素は任意で、message属性の値が、template要素で示した内容とあっているかどうか確認します。22行目の(91)n41+cd0は、AIは91、n41は41桁の数字、cd0は、AIと41桁の数字を含めたチェックディ ジットの計算結果を示します。またmodule-width要素でモジュール幅を指定できます。

図 1.barcode.fo

<?xml version="1.0" encoding="UTF-8" ?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
  <fo:layout-master-set>
    <fo:simple-page-master page-height="297mm" page-width="210mm" margin-top="0mm" margin-left="0mm" margin-right="0mm" margin-bottom="0mm"  master-name="pageMaster">
      <fo:region-body margin-top="30mm" margin-left="10mm" margin-right="10mm" margin-bottom="20mm" />
      <fo:region-before display-align="after" region-name="header" extent="25mm" />
      <fo:region-after region-name="footer" extent="15mm" />
      <fo:region-start extent="8mm" />
      <fo:region-end extent="8mm" />
    </fo:simple-page-master>
  </fo:layout-master-set>
  
  <fo:page-sequence master-reference="pageMaster">
    <fo:flow flow-name="xsl-region-body">
      <fo:block>EAN-128</fo:block>
      <fo:block>
        <fo:instream-foreign-object>
          <barcode xmlns="http://barcode4j.krysalis.org/ns" message="9176643219876543210987654321098765432109178">
            <ean-128>
              <height>15mm</height>
              <module-width>0.21mm</module-width>
              <template>(91)n41+cd0</template>
              <human-readable>
                <pattern>__________-____________________________-_-______-_</pattern>
              </human-readable>
            </ean-128>
          </barcode>
        </fo:instream-foreign-object>
      </fo:block>
    </fo:flow>
  </fo:page-sequence>
</fo:root>

図 2.PDFバーコード付きPDF(クリックするとPDFを表示します。)

参照
FOP add-ons
http://xmlgraphics.apache.org/fop/resources.html#products-fop-add-ons
Instructions for the Apache FOP extension
http://barcode4j.sourceforge.net/2.1/fop-ext.html

©中條勝徳 and okulejp.com, 2012.

広告

okule による Barcode4J, FOP, XML への投稿 (7月 22, 2012)

タグ: , , ,

Apache FOPのEclipseコード補完設定(コンテンツアシスト)   1 comment

Apache FOPのEclipseのコード補完設定(コンテンツアシスト)が可能です。
コード補完設定(コンテンツアシスト)には、fop.xsdが必要です。fop.xsdは、ソースアーカイブに含まれています。

ソースアーカイブのダウンロードサイト
Apache FOP: Downloading A Distribution

                   1.下記の動画は、Apache FOPのEclipseコード補完設定(コンテンツアシスト)方法が説明されている動画です。

©中條勝徳 and okulejp.com, 2012.

SVGを利用したデータ可視化のためのグラフ作成   1 comment

データ可視化のためのグラフ作成を考えていて、検索サイトで調べたら、大変すばらしいグラフ作成機能を持つccchartというJavaScriptグラフライブラリィを見つけました。
下記サイトを見てもらうとわかりますが、数学的センスを感じずにはいれませんでした。またデザインセンスもとても良いと思います。大げさですが、こんなにすばらしいグラフをWEB上で実現できるとは驚きです。
ccchart(高橋 登史朗氏作成)     http://jsgt.org/c/

似たようなことをSVGで表現してみました。下のグラフは画像リンクです。画像自体はPNG形式ですが、リンク先でSVG形式の表示ができます。リンク先のソースを見てもらえば、SVGのグラフ作成は、そんなに難しくないと思います。(wordpressでは、SVGタグを使えないため、リンク先での表示になりました。またフィルター処理を行っているのでfirefoxまたは、chromeでご覧下さい。また棒グラフの棒には、ツールチップ表示するようになっています。)

下記のリンクは、FOPのバイナリ配布に含まれるサンプルプログラムの「ExampleSVG2PDF.java」を使用して直接SVGからPDF化しました。Apache FOPを使用してXSL-FOを経由してもSVG画像をPDFにできますが、フィルター処理のものをPDFにすると正しく表示されませんので注意が必要です。
棒グラフのSVGをベクター形式で埋め込んだPDF   http://okule.files.wordpress.com/2012/07/bar_chart1.pdf
(PDFで拡大表示してもきれいに表示される。)

BatikSVG Rasterizerツールでも、PDF化できますが、SVG Rasterizerツールが使用する、pdf-transcoder.jarの実装バージョンが、1.0beta2なので、PDFファイルの文書プロパティ→概要→詳細情報のPDF変換のところが、「Apache FOP Version 1.0beta2: PDF Transcoder for Batik」となるので注意が必要である。FOPのバイナリ配布に含まれるサンプルプログラムの「ExampleSVG2PDF.java」を使用すれば、「Apache FOP Version SVN tags/fop-1_0: PDF Transcoder for Batik」になります。

SVGでグラフを表現する最大の利点の一つは、ブラウザー上で拡大表示しても画質が崩れないことです。拡大してもきれいに表示されます。目の良いお客様ばかりではないので重要なことです。またグラフがとてもこまかいときに、助かります。二つ目は、XML形式なのでテキストエディタで直に作成・修正できることです。三つ目は、バイナリー形式ではなく、XML形式なので、プログラムから生成することが比較的容易であることです。

SVGを利用したグラフ作成は、データウェアハウスの情報分析ツールに応用できると思います。お客様のデータウェアハウスから、このようなグラフを作成できたら面白いと思いますし、お客様に喜んでいただけると思います。データ可視化を実現する上で、SVGによるグラフ作成は、とても重要な武器になると思います。次期IE10では、SVG フィルター処理が、標準でサポートされますので非常に楽しみです。

©中條勝徳 and okulejp.com, 2012.

okule による SVG, XML への投稿 (7月 16, 2012)

タグ: , , , , ,