SeamFramework.org Community Documentation

- 前のページ
- 次のページ

## 第18章 iText PDF 生成

Seam は iText を使ったドキュメント生成用コンポーネント一式を含むようになります。 Seam の iText ドキュメントサポートの主目的は PDF ドキュメントの生成になりますが、 Seam は RTF ドキュメント生成の基本的なサポートも提供しています。

## 18.1. PDF サポートを使う

iText サポートは `jboss-seam-pdf.jar` によって提供されます。 この JAR には PDF にレンダリング可能なビューの構成に使用される iText コントロールやレンダリングされたドキュメントをユーザーに提供する DocumentStore コンポーネントが含まれます。 PDF サポートをアプリケーションに含ませるには iText JAR ファイルと一緒に `WEB-INF/lib` ディレクトリに `jboss-seam-pdf.jar` を含ませます。 Seam の iText サポートを使用するのに必要な設定はこれだけです。

Seam iText モジュールにはビューテクノロジーとして Facelets を使用する必要があります。 ライブラリの今後のバージョンも JSP の使用に対応する可能性があります。 また、 seam-ui パッケージの使用も必要となります。

`examples/itext` プロジェクトには実行可能なデモ用 PDF サポートのサンプルが含まれています。 正確なパッケージ化の導入を行い、 現在サポートされている PDF 生成の主要な機能を実際に示すサンプルがいくつか含まれています。

### 18.1.1. ドキュメントを作成する

`<p:document>` | 詳細 ドキュメントは `http://jboss.com/products/seam/pdf` 名前空間にあるタグを使い facelet XHTML で生成されます。 ドキュメントにはそのルートに必ず `document` タグがあるはずです。 `document` タグは Seam がドキュメントを DocumentStore に生成しその格納コンテントに HTML リダイレクトをレンダリングするための準備を行います。 属性 `type` — 生成されるドキュメントのタイプです。 有効な値は `PDF`、 `RTF`、 `HTML` の各モードになります。 Seam は PDF 生成にデフォルト設定するため多くの機能は PDF ドキュメント生成時にのみ正しく動作します。 `pageSize` — 生成されるページのサイズです。 最も一般的に使用される値は `LETTER` と `A4` でしょう。 対応ページサイズの全一覧は `com.lowagie.text.PageSize` クラスにあります。 代わりに pageSize でページの幅と高さを直接与えることもできます。 たとえば、 「612 792」は LETTER ページサイズと同じになります。 `orientation` — ページの向きです。 有効な値は `portrait` と `landscape` です。 landscape モードではページの高さと幅のサイズ値が逆になります。 `margins` — 左、 右、 上、 下の余白の値です。 `marginMirroring` — 余白の設定が交互のページで逆になることを示します。 `disposition` — ウェブブラウザで PDF を生成する場合にドキュメントの HTTP `Content-Disposition` を判断します。 有効な値は可能であればブラウザウィンドウ内にドキュメントを表示させることを表す `inline` とドキュメントをダウンロードとして処理することを表す `attachment` になります。 デフォルト値は `inline` です。 `fileName` — 添付用です。 この値はダウンロードしたファイル名を上書きします。 メタデータの属性 `title` `subject` `keywords` `author` `creator` 使い方
    <p:document xmlns:p="http://jboss.com/products/seam/pdf"

    >

      The document goes here.

    </p:document

    >

### 18.1.2. 基本的なテキストの要素

役に立つドキュメントにはテキスト以外のものも含まれる必要があります。 ただし、 標準 UI コンポーネントは HTML 生成に対して適合されるので、 PDF コンテントの生成には役に立ちません。 Seam は特殊な UI コンポーネントを適切な PDF コンテントの生成に対して提供しています。 `<p:image>` や `<p:paragraph>` のようなタグはシンプルなドキュメントのベーシックな基盤となります。 `<p:font>` のようなタグはその回りのコンテントすべてに対してスタイル情報を提供します。

`<p:paragraph>` | 詳細 テキストでの使用が多く、 文章をひとかたまりごとに区切るため理にかなったグループでテキストの断片の流れを作り、形成、スタイル化することができます。 属性 `firstLineIndent` `extraParagraphSpace` `leading` `multipliedLeading` `spacingBefore` — 要素の前に空白スペースが挿入されます。 `spacingAfter` — 要素の後に空白スペースが挿入されます。 `indentationLeft` `indentationRight` `keepTogether` 使い方
    <p:paragraph alignment="justify">

        This is a simple document.  It isn't very fancy.

    </p:paragraph

    >
`<p:text>` | 詳細 `text` タグにより通常の JSF 変換メカニズムを使ってアプリケーションデータからテキストの断片を生成することができます。 HTML ドキュメントをレンダリングする際に使用される `outputText` によく似ています。 属性 `value` — 表示される値です。 一般的には値バインディング式になります。 使い方
    <p:paragraph>

        The item costs <p:text value="#{product.price}">

            <f:convertNumber type="currency" currencySymbol="$"/>

        </p:text>

    </p:paragraph

    >
`<p:html>` | 詳細 `html` タグは HTML コンテントを PDF にレンダリングします。 属性 `value` — 表示されるテキストです。 使い方
    <p:html value="This is HTML with <b

    >some markup</b

    >." />

    <p:html>

        <h1

    >This is more complex HTML</h1>

        <ul>

            <li

    >one</li>

            <li

    >two</li>

            <li

    >three</li>

        </ul>

    </p:html>

    <p:html>

        <s:formattedText value="*This* is |Seam Text| as HTML.  It's very^cool^." />

    </p:html

    >
`<p:font>` | 詳細 フォントタグはその中のすべてのテキストに使用されるデフォルトフォントを定義します。 属性 `name` — フォント名です。 たとえば、 `COURIER`、 `HELVETICA`、 `TIMES-ROMAN`、 `SYMBOL`、 `ZAPFDINGBATS` などです。 `size` — フォントのポイントサイズです。 `style` — フォントのスタイルです。 いずれを組み合わせることもできます。 `NORMAL`、 `BOLD`、 `ITALIC`、 `OBLIQUE`、 `UNDERLINE`、 `LINE-THROUGH` `color` — フォントの色です。 (色の値については 項18.1.7.1. 「Color Values」 を参照)。 `encoding` — 文字セットエンコーディングです。 使い方
    <p:font name="courier" style="bold" size="24">

        <p:paragraph

    >My Title</p:paragraph>

    </p:font

    >
`<p:newPage>` | 詳細 `p:newPage` は改ページを挿入します。 使い方
    <p:newPage />
`<p:image>` | 詳細 `p:image` はドキュメントにイメージを挿入します。 イメージは `value` 属性を使ってウェブアプリケーションコンテキストまたはクラスパスからロード可能です。 リソースはアプリケーションコードで動的に生成することもできます。 `imageData` 属性は値バインディング表現を指定することができ、 この値は `java.awt.Image` オブジェクトになります。 属性 `value` — アプリケーション生成のイメージにバインドするメソッド式またはリソース名です。 `rotation` — 角度単位のイメージ回転です。 `height` — イメージの高さです。 `width` — イメージの幅です。 `alignment`— イメージの位置です。 (可能な値については項18.1.7.2. 「位置調整の値」 を参照) `alt` — イメージの代替となるテキスト表示です。 `indentationLeft` `indentationRight` `spacingBefore` — 要素の前に空白スペースが挿入されます。 `spacingAfter` — 要素の後に空白スペースが挿入されます。 `widthPercentage` `initialRotation` `dpi` `scalePercent` — イメージに使用する倍率です (パーセンテージ)。 x と y の倍率を表す単一のパーセンテージ値または 2 つのパーセンテージ値で表すことができます。 `scaleToFit` — イメージを拡大するときの X および Y のサイズを指定する。イメージのXY比を保ちながら、イメージはそれらの次元にできるだけ合うように拡大する。 `wrap` `underlying` 使い方
    <p:image value="/jboss.jpg" />
    <p:image value="#{images.chart}" />
`<p:anchor>` | 詳細 `p:anchor` はドキュメントからクリックできるリンクを定義します。 次の属性をサポートしています。 属性 `name` — ドキュメント内アンカーの行き先名です。 `reference` — リンクの参照先となる目的地です。 ドキュメント内の他のポイントへのリンクは "#" で始まります。 たとえば、 "#link1" は `link1` の `name` を持つアンカー位置を参照します。 リンクはドキュメントの外側にあるリソースをポイントする完全な URL でも構いません。 使い方
    <p:listItem

    ><p:anchor reference="#reason1"

    >Reason 1</p:anchor

    ></p:listItem

    >

    ...

    <p:paragraph>

        <p:anchor name="reason1"

    >It's the quickest way to get "rich"</p:anchor

    >

        ...

    </p:paragraph

    >

### 18.1.3. ヘッダーとフッター

`<p:header>` `<p:footer>` | 詳細 `p:header` と `p:footer` コンポーネントは生成されたドキュメントの各ページにヘッダーとフッターのテキストを配置する機能を提供します。 ヘッダーとフッターの宣言はドキュメントの冒頭に表されます。 属性 `alignment` — ヘッダーとフッターのボックスセクションの位置です (位置の値については 項18.1.7.2. 「位置調整の値」 を参照)。 `backgroundColor` — ヘッダーとフッターボックスの背景色です (色の値については 項18.1.7.1. 「Color Values」 を参照)。 `borderColor` — ヘッダーとフッターボックスの境界線の色です。 `borderColorLeft`、 `borderColorRight`、 `borderColorTop`、 `borderColorBottom` を使って境界線ごとに指定が可能です (色の値については 項18.1.7.1. 「Color Values」 を参照)。 `borderWidth` — 境界線の幅です。 `borderWidthLeft`、 `borderWidthRight`、 `borderWidthTop`、 `borderWidthBottom` を使って境界線ごとに指定が可能です。 使い方
    <f:facet name="header">

      <p:font size="12">

        <p:footer borderWidthTop="1" borderColorTop="blue"

                  borderWidthBottom="0" alignment="center">

            Why Seam? [<p:pageNumber />]

        </p:footer>

      </p:font>

    </f:facet

    >
`<p:pageNumber>` | 詳細 現在のページ番号は `p:pageNumber` タグを使うとヘッダーまたはフッターの内側に配置することができます。 このページ番号タグはヘッダーまたはフッターのコンテキスト内で 1 度だけ使用することができます。 使い方
    <p:footer borderWidthTop="1" borderColorTop="blue"

              borderWidthBottom="0" alignment="center">

        Why Seam? [<p:pageNumber />]

    </p:footer>

### 18.1.4. 章とセクション

`<p:chapter>` `<p:section>` | 詳細 生成されるドキュメントが本または論文の構造をとる場合、 `p:chapter` と `p:section` の各タグを使用して必要となる構造を構成することができます。 セクションは章の内側でのみ使用できますが、 適宜、 ネストさせることができます。 ほとんどの PDF ビューワはドキュメント内の章とセクション間を簡単に移動できる機能を提供しています。 属性 `alignment` — ヘッダーとフッターのボックスセクションの位置です (位置の値については 項18.1.7.2. 「位置調整の値」 を参照)。 `number` — 章番号です。 各章すべてに章番号を割り当ててください。 `numberDepth` — セクション番号付けの深さです。 すべてのセクションは前後の章やセクションに相対的に番号付けが行われます。 デフォルトの深さの 3 で表示すると、 第 3 章の第 1 節、 第 4 項はセクション 3.1.4 になります。 章番号を省略するには番号の深さ 2 を使用してください。 この場合セクション番号は 1.4 などのように表示されます。 使い方
    <p:document xmlns:p="http://jboss.com/products/seam/pdf"

                title="Hello">

       <p:chapter number="1">

          <p:title

    ><p:paragraph

    >Hello</p:paragraph

    ></p:title>

          <p:paragraph

    >Hello #{user.name}!</p:paragraph>

       </p:chapter>

       <p:chapter number="2">

          <p:title

    ><p:paragraph

    >Goodbye</p:paragraph

    ></p:title>

          <p:paragraph

    >Goodbye #{user.name}.</p:paragraph>

       </p:chapter>

    </p:document

    >
`<p:header>` | 詳細 いずれの章やセクションも `p:title` を含むことができます。 タイトルは章/セクション番号のとなりに表示されます。 タイトルのボディは、 生テキストを含ませることも、 `p:paragraph` にすることもできます。

### 18.1.5. リスト

リストの構成は `p:list` と `p:listItem` のタグを使って表示させることができます。 リストには適宜、 ネストされたサブリストを含ませることもできます。 リストのアイテムはリストの外側では使用できません。 次のドキュメントは `ui:repeat` タグを使って Seam コンポーネントから取得した値のリストを表示しています。

    <p:document xmlns:p="http://jboss.com/products/seam/pdf"

                xmlns:ui="http://java.sun.com/jsf/facelets"

                title="Hello">

       <p:list style="numbered">

          <ui:repeat value="#{documents}" var="doc">

             <p:listItem

    >#{doc.name}</p:listItem>

          </ui:repeat>

       </p:list>

    </p:document

    >

`<p:list>` | 属性 `style` — リストの箇条書き／番号付けのスタイルです。 `NUMBERED`、 `LETTERED`、 `GREEK`、 `ROMAN`、 `ZAPFDINGBATS`、 `ZAPFDINGBATS_NUMBER` のいずれかになります。 スタイルの指定がない場合は中黒になります。 `listSymbol` — 箇条書きリストの場合、 その黒点を指定します。 `indent` — リストの字下げのレベルです。 `lowerCase` — letters を使ったリストのスタイルの場合、 その文字を小文字にするかどうかを示します。 `charNumber` — ZAPFDINGBATS の場合、 箇条書きに使用する符号の符号コードを示します。 `numberType` — ZAPFDINGBATS_NUMBER の場合、 番号付けのスタイルを示します。 使い方
    <p:list style="numbered">

      <ui:repeat value="#{documents}" var="doc">

        <p:listItem

    >#{doc.name}</p:listItem>

      </ui:repeat>

    </p:list

    >
`<p:listItem>` | 詳細 `p:listItem` は次の属性をサポートしています。 属性 `alignment` — ヘッダーとフッターのボックスセクションの位置です (位置の値については 項18.1.7.2. 「位置調整の値」 を参照)。 `alignment` — リストアイテムの位置です (可能な値については 項18.1.7.2. 「位置調整の値」 を参照)。 `indentationLeft` — 左字下げの分量です。 `indentationRight` — 右字下げの分量です。 `listSymbol` — このリストアイテム用のデフォルトリスト記号を上書きします。 使い方
    ...

### 18.1.6. 表

表の構成は `p:table` と `p:cell` のタグを使って作成することができます。 多くの表構成とは異なり明示的な列の宣言はありません。 表にコラムが 3 つある場合は、 3 セルすべてが自動的に列を形成します。 表の構成が複数ページに渡る場合、 ヘッダーとフッターは繰り返されます。

`<p:table>` | 詳細 `p:table` は次の属性をサポートしています。 属性 `columns` — 表の列を構成するコラム (セル) の数です。 `widths` — 各コラムの相対幅です。 各コラムに対して値は 1 つとなります。 たとえば、 widths="2 1 1" の場合コラムは 3 つあり 1 番目のコラムが 2 番目と 3 番目のコラムの 2 倍の大きさになることを示しています。 `headerRows` — ヘッダーまたはフッターの列とみなされる列の初期の列数で、 表が複数のページをスパンする場合は繰り返されます。 `footerRows` — フッターの列とみなされる列の列数です。 この値は `headerRows` 値から差し引かれます。 ヘッダーを構成する列が 2 列とフッターを構成する列が 1 列のドキュメントの場合、 `headerRows` は 3 で `footerRows` は 1 にセットされます。 `widthPercentage` — 表がスパンするページ幅の割合です。 `horizontalAlignment` — 表の水平位置です (可能な値については 項18.1.7.2. 「位置調整の値」 を参照)。 `skipFirstHeader` `runDirection` `lockedWidth` `splitRows` `spacingBefore` — 要素の前に空白スペースが挿入されます。 `spacingAfter` — 要素の後に空白スペースが挿入されます。 `extendLastRow` `headersInEvent` `splitLate` `keepTogether` 使い方
    <p:table columns="3" headerRows="1">

      <p:cell

    >name</p:cell>

      <p:cell

    >owner</p:cell>

      <p:cell

    >size</p:cell>

      <ui:repeat value="#{documents}" var="doc">

        <p:cell

    >#{doc.name}</p:cell>

        <p:cell

    >#{doc.user.name}</p:cell>

        <p:cell

    >#{doc.size}</p:cell>

      </ui:repeat>

    </p:table

    >
`<p:cell>` | 詳細 `p:cell` は次の属性をサポートしています。 属性 `colspan` — `colspan` を 1 を越える値に宣言するとセルが複数のコラムをスパンできるようになります。 表には複数列に渡ったスパンを行う機能はありません。 `horizontalAlignment` — セルの水平位置です (可能な値は 項18.1.7.2. 「位置調整の値」 を参照)。 `verticalAlignment` — セルの垂直位置です (可能な値は 項18.1.7.2. 「位置調整の値」 を参照)。 `padding` — `paddingLeft`、 `paddingRight`、 `paddingTop`、 `paddingBottom` を使って特定サイドの詰めを指定することもできます。 `useBorderPadding` `leading` `multipliedLeading` `indent` `verticalAlignment` `extraParagraphSpace` `fixedHeight` `noWrap` `minimumHeight` `followingIndent` `rightIndent` `spaceCharRatio` `runDirection` `arabicOptions` `useAscender` `grayFill` `rotation` 使い方
    <p:cell

    >...</p:cell

    >

### 18.1.7. ドキュメントの定数

本セクションでは複数のタグで属性により共有される定数のいくつか説明します。

#### 18.1.7.1. Color Values

色を指定するいくつかの方法が提供されます。数が限られますが、名前によって参照できるものもあります。それらの色は `white`, `gray`, `lightgray`, `darkgray`, `black`, `red`, `pink`, `yellow`, `green`, `magenta`, `cyan` そして `blue` です。色は`java.awt.Color`によって定義された整数値によって指定することも可能です。最後に、色の値は `rgb(r,g,b)` または `rgb(r,g,b,a)` によって指定することも許されます。赤、緑、青のアルファ値は 0 から 255までの整数値によって指定するか、または '%' の印がついたパーセンテージを表す浮動小数点値によって指定可能です。

#### 18.1.7.2. 位置調整の値

位置調整の値が使用される場所で、 Seam PDF は次の横方向の位置調整値、 `left`、 `right`、 `center`、 `justify`、 `justifyall` をサポートしています。 縦方向の値は `top`、 `middle`、 `bottom`、 `baseline` です。

## 18.2. グラフ

グラフのサポートも `jboss-seam-pdf.jar` で提供されます。 グラフは PDF ドキュメントで使用できます。 また、 イメージとして HTML ページでも使用可能です。 グラフの作成には JFreeChart ライブラリ (`jfreechart.jar` と `jcommon.jar`) を `WEB-INF/lib` ディレクトリに追加する必要があります。 円グラフ、 棒グラフ、 折れ線グラフの 3 種類が現在サポートされています。もっと制御したい場合は、Java コードを使ってグラフを作ることも可能です。

`<p:chart>` | 詳細 Seam コンポーネントによって Java 内で生成されたグラフの表示 属性 `chart` — 表示されるグラフオブジェクトです。 `height` — グラフの高さです。 `width` — グラフの幅です。 使い方
    <p:chart chart="#{mycomponent.chart}" width="500" height="500" />
`<p:barchart>` | 詳細 棒グラフを表示します。 属性 `chart` — プログラムによってグラフを生成する場合に表示されるグラフオブジェクトです。 `dataset` — プログラムによってデータセットを生成する場合に表示されるデータセットです。 `borderVisible` — グラフ全体を囲む境界線を表示するかどうかを制御します。 `borderPaint` — 境界線を表示させる場合の色になります。 `borderBackgroundPaint` — グラフのデフォルト背景色です。 `borderStroke` — `domainAxisLabel` — 領域軸のテキストラベルです。 `domainLabelPosition` — 領域軸のカテゴリラベルの角度です。有効な値は `STANDARD`、 `UP_45`、 `UP_90`、 `DOWN_45` そして `DOWN_90` です。 別の方法として、値はラジアンで正または負の値を指定できます。 `domainAxisPaint` — 領域軸ラベルの色です。 `domainGridlinesVisible`— 領域軸のグリッド線をグラフに表示させるかどうかを制御します。 `domainGridlinePaint`— 領域グリッド線を表示させる場合の色です。 `domainGridlineStroke` — 領域グリッド線を表示する場合の線スタイルです。 `height` — グラフの高さです。 `width` — グラフの幅です。 `is3D` — グラフを 2D ではなく 3D で表示させること示す boolean 値です。 `legend` — グラフに説明文を含ませるかどうかを示す boolean 値です。 `legendItemPaint`— 説明文内のテキストラベルのデフォルト色です。 `legendItemBackgoundPaint`— グラフの背景色とは異なる色にする場合の説明文の背景色です。 `legendOutlinePaint`— 説明文を囲む境界線の色です。 `orientation` — 図表の向きで、 `vertical` (デフォルト) または `horizontal` になります。 `plotBackgroundPaint`— 図表背景の色です。 `plotBackgroundAlpha`— 図表背景のアルファ (透明度) レベルです。 0 (完全に透明) から 1 (完全に不透明) の間の数字になります。 `plotForegroundAlpha`— 図表のアルファ (透明度) レベルです。 0 (完全に透明) から 1 (完全に不透明) の間の数字になります。 `plotOutlinePaint`— その範囲のグリッド線を表示させる場合の色です。 `plotOutlineStroke` — その範囲のグリッド線を表示させる場合の線スタイルです。 `rangeAxisLabel` — 範囲軸用のテキストラベルです。 `rangeAxisPaint` — 範囲軸ラベルの色です。 `rangeGridlinesVisible`— 範囲軸のグリッド線をグラフに表示させるかどうかを制御します。 `rangeGridlinePaint`— 範囲グリッド線を表示させる場合の色です。 `rangeGridlineStroke` — 範囲グリッド線を表示させる場合の線スタイルです。 `title` — グラフタイトルのテキストです。 `titlePaint`— グラフタイトルのテキスト色です。 `titleBackgroundPaint`— グラフタイトルを囲む背景色です。 `width` — グラフの幅です。 使い方
    <p:barchart title="Bar Chart" legend="true"

                width="500" height="500">

        <p:series key="Last Year">

            <p:data columnKey="Joe" value="100" />

            <p:data columnKey="Bob" value="120" />

        </p:series

    >        <p:series key="This Year">

            <p:data columnKey="Joe" value="125" />

            <p:data columnKey="Bob" value="115" />

        </p:series>

    </p:barchart

    >
`<p:linechart>` | 詳細 折れ線グラフを表示します。 属性 `chart` — プログラムによってグラフを生成する場合に表示されるグラフオブジェクトです。 `dataset` — プログラムによってデータセットを生成する場合に表示されるデータセットです。 `borderVisible` — グラフ全体を囲む境界線を表示するかどうかを制御します。 `borderPaint` — 境界線を表示させる場合の色になります。 `borderBackgroundPaint` — グラフのデフォルト背景色です。 `borderStroke` — `domainAxisLabel` — 領域軸のテキストラベルです。 `domainLabelPosition` — 領域軸のカテゴリラベルの角度です。有効な値は `STANDARD`、 `UP_45`、 `UP_90`、 `DOWN_45` そして `DOWN_90` です。 別の方法として、値はラジアンで正または負の値を指定できます。 `domainAxisPaint` — 領域軸ラベルの色です。 `domainGridlinesVisible`— 領域軸のグリッド線をグラフに表示させるかどうかを制御します。 `domainGridlinePaint`— 領域グリッド線を表示させる場合の色です。 `domainGridlineStroke` — 領域グリッド線を表示する場合の線スタイルです。 `height` — グラフの高さです。 `width` — グラフの幅です。 `is3D` — グラフを 2D ではなく 3D で表示させること示す boolean 値です。 `legend` — グラフに説明文を含ませるかどうかを示す boolean 値です。 `legendItemPaint` — 説明文内のテキストラベルのデフォルト色です。 `legendItemBackgoundPaint` — グラフの背景色とは異なる色にする場合の説明文の背景色です。 `legendOutlinePaint` — 説明文を囲む境界線の色です。 `orientation` — 図表の向きで、 `vertical` (デフォルト) または `horizontal` になります。 `plotBackgroundPaint` — 図表背景の色です。 `plotBackgroundAlpha` — 図表背景のアルファ (透明度) レベルです。 0 (完全に透明) から 1 (完全に不透明) の間の数字になります。 `plotForegroundAlpha` — 図表のアルファ (透明度) レベルです。 0 (完全に透明) から 1 (完全に不透明) の間の数字になります。 `plotOutlinePaint` — その範囲のグリッド線を表示させる場合の色です。 `plotOutlineStroke` — その範囲のグリッド線を表示させる場合の線スタイルです。 `rangeAxisLabel` — 範囲軸用のテキストラベルです。 `rangeAxisPaint` — 範囲軸ラベルの色です。 `rangeGridlinesVisible` — 範囲軸のグリッド線をグラフに表示させるかどうかを制御します。 `rangeGridlinePaint` — 範囲グリッド線を表示させる場合の色です。 `rangeGridlineStroke` — 範囲グリッド線を表示させる場合の線スタイルです。 `title` — グラフタイトルのテキストです。 `titlePaint` — グラフタイトルのテキスト色です。 `titleBackgroundPaint` — グラフタイトルを囲む背景色です。 `width` — グラフの幅です。 使い方
    <p:linechart title="Line Chart"

                width="500" height="500">

        <p:series key="Prices">

            <p:data columnKey="2003" value="7.36" />

            <p:data columnKey="2004" value="11.50" />

            <p:data columnKey="2005" value="34.625" />

            <p:data columnKey="2006" value="76.30" />

            <p:data columnKey="2007" value="85.05" />

        </p:series>

    </p:linechart

    >
`<p:piechart>` | 詳細 円グラフを表示します。 属性 `title` — グラフタイトルのテキストです。 `chart` — プログラムによってグラフを生成する場合に表示されるグラフオブジェクトです。 `dataset` — プログラムによってデータセットを生成する場合に表示されるデータセットです。 `label` — パイセンクションののデフォルトラベルのテキストです。 `legend` — グラフに説明文を含ませるかどうかを示す boolean 値です。 デフォルト値は true です。 `is3D` — グラフを 2D ではなく 3D で表示させること示す boolean 値です。 `labelLinkMargin` — ラベルのリンク余白です。 `labelLinkPaint` — ラベルリンク行に使用するペイントです。 `labelLinkStroke` — ラベルリンク行に使用する線です。 `labelLinksVisible` — ラベルリンクを描画するかどうかを制御するフラグです。 `labelOutlinePaint` — セクションラベルの輪郭を描くのに使用するペイントです。 `labelOutlineStroke` — セクションラベルの輪郭を描くのに使用する線です。 `labelShadowPaint` — セクションラベルの影を描くのに使用するペイントです。 `labelPaint` — セクションラベルを描くのに使用する色です。 `labelGap` — 図表幅の割合によるラベルと図表の間隔です。 `labelBackgroundPaint` — セクションラベルの背景を描くのに使用する色です。 null にすると背景は埋められません。 `startAngle` — 1 番目のセクションの開始角度です。 `circular` — グラフを円で描くことを示す boolean 値です。 false にするとグラフは楕円で描かれます。 デフォルトは true です。 `direction` — パイセクションが描かれる方向です。 `clockwise` か `anticlockwise` のどちらかになります。 デフォルトは `clockwise` です。 `sectionOutlinePaint` — 全セクションの輪郭ペイントです。 `sectionOutlineStroke` — 全セクションの輪郭線です。 `sectionOutlinesVisible` — 図表内の各セクションにそれぞれ輪郭を描くかどうかを示します。 `baseSectionOutlinePaint` — ベースとなるセクションの輪郭ペイントです。 `baseSectionPaint` — ベースとなるセクションのペイントです。 `baseSectionOutlineStroke` — ベースとなるセクションの輪郭線です。 使い方
    <p:piechart title="Pie Chart" circular="false" direction="anticlockwise"

        startAngle="30" labelGap="0.1" labelLinkPaint="red"

    >

        <p:series key="Prices"

    >

            <p:data key="2003" columnKey="2003" value="7.36" />

            <p:data key="2004" columnKey="2004" value="11.50" />

            <p:data key="2005" columnKey="2005" value="34.625" />

            <p:data key="2006" columnKey="2006" value="76.30" />

            <p:data key="2007" columnKey="2007" value="85.05" />

        </p:series

    >

    </p:piechart

    >
`<p:series>` | 詳細 カテゴリデータはシリーズに分割できます。 シリーズタグを使ってデータセットをシリーズで分類しそのシリーズ全体にスタイリングを適用します。 属性 `key` — シリーズ名です。 `seriesPaint` — シリーズ内の各アイテムの色です。 `seriesOutlinePaint` — シリーズ内の各アイテムの輪郭色です。 `seriesOutlineStroke` — シリーズ内の各アイテムを描くのに使用する線です。 `seriesVisible` — シリーズを表示させるかどうかを示す boolean です。 `seriesVisibleInLegend` — 説明文内にシリーズを記載するかどうかを示す boolean です。 使い方
    <p:series key="data1">

        <ui:repeat value="#{data.pieData1}" var="item">

            <p:data columnKey="#{item.name}" value="#{item.value}" />

        </ui:repeat>

    </p:series

    >
`<p:data>` | 詳細 データタグはグラフ内で表示される各データポイントを表現します。 属性 `key` — データアイテム名です。 `series` — `<p:series>` の内側に埋め込まれない場合のシリーズ名です。 `value` — 数値データです。 `explodedPercent` — 円グラフの場合、 explodedPercent 属性はグラフの一片がどのように展開されるかを示します。 `sectionOutlinePaint` — 棒グラフの場合のセクション輪郭の色です。 `sectionOutlineStroke` — 棒グラフの場合のセクション輪郭の線タイプです。 `sectionPaint` — 棒グラフのセクションの色です。 使い方
    <p:data key="foo" value="20" sectionPaint="#111111"

            explodedPercent=".2" />

    <p:data key="bar" value="30" sectionPaint="#333333" />

    <p:data key="baz" value="40" sectionPaint="#555555"

            sectionOutlineStroke="my-dot-style" />
`<p:color>` | 詳細 色コンポーネントは色埋めされた形を描く場合に参照できる色または階調を宣言します。 属性 `color` — 色の値です。 階調色の場合はこの色が開始色となります。 項18.1.7.1. 「Color Values」 `color2` — 階調色の場合はこの色が階調の最終となります。 `point` — 階調色開始点の座標です。 `point2` — 階調色終了点の座標です。 使い方
    <p:color id="foo" color="#0ff00f"/>

    <p:color id="bar" color="#ff00ff" color2="#00ff00"

                      point="50 50" point2="300 300"/>
`<p:stroke>` | 詳細 グラフ内に先途を描くのに使用する線を表します。 属性 `width` — 線の幅です。 `cap` — 先端のタイプです。 有効な値は `butt`、 `round`、 `square` です。 `join` — 接合部分のタイプです。 有効な値は `miter`、 `round`、 `bevel` です。 `miterLimit` — 巻いたージョイントの場合のジョイントの制限サイズです。 `dash` — この値は線を描くのに使用する点線パターンを設定します。 空白で区切られた整数は交互に描かれる箇所と描かれない箇所の長さを示します。 `dashPhase` — 点線を引く場合の補正を示します。 使い方
    <p:stroke id="dot2" width="2" cap="round" join="bevel" dash="2 3" />

## 18.3. バーコード

Seam は iText を使って幅広い種類の形式でバーコードを生成することができます。 こうしたバーコードは PDF ドキュメントに埋め込んだり、 Web ページにイメージとして表示させたりすることができます。 HTML イメージを使用している場合、 現在バーコードはバーコード内でバーコードテキストを表示することができません。

`<p:barCode>` | 詳細 バーコードイメージを表示します。 属性 `type` — iText が対応できるバーコードタイプです。有効な値には、 `EAN13`、 `EAN8`、 `UPCA`、 `UPCE`、 `SUPP2`、 `SUPP5`、 `POSTNET`、 `PLANET`、 `CODE128`、 `CODE128_UCC`、 `CODE128_RAW`、 `CODABAR` などが含まれます。 `code` — バーコードによってコード化される値です。 `xpos` — PDF の場合、 ページ上のバーコードの絶対 x 位置です。 `ypos` — PDF の場合、 ページ上のバーコードの絶対 y 位置です。 `rotDegrees` — PDF の場合のバーコードの角度による回転係数です。 `barHeight` — barCode 内のバーの高さです。 `minBarWidth` — バーの最小幅です。 `barMultiplier` — 幅広のバーに対するバー乗数、 または `POSTNET` と `PLANET` コードのバー間の距離になります。 `barColor` — バーを描く色です。 `textColor` — バーコード上のテキスト色です。 `textSize` — バーコードテキストがある場合のサイズです。 `altText` — HTML イメージリンクの `alt` テキストです。 使い方
    <p:barCode type="code128"

               barHeight="80"

               textSize="20"

               code="(10)45566(17)040301"

               codeType="code128_ucc"

               altText="My BarCode" />

## 18.4. 入力フォーム

指定フィールドを持つ事前生成の複雑な PDF がある場合、 アプリケーションから値を入力してユーザーに提示することが簡単にできます。

`<p:form>` | 詳細 移植するフォームテンプレートを定義します。 属性 `URL` — てんぷれーとして使用する PDF ファイルをポイントする URL です。 値にプロトコル部分 (://) がない場合そのファイルはローカルに読み込まれます。 `filename` — 生成される PDF ファイルに使用するファイル名です。 `exportKey` — イベントコンテキスト内の指定キー配下の DocumentData オブジェクトに生成される PDF ファイルを配置します。 セットされるとリダイレクトが起こらなくなります。

`<p:field>` | 詳細 フィールド名をその値に接続します。 属性 `name` — フィールド名です。 `value` — フィールドの値です。 `readOnly` — フィールドは読み取り専用です。 デフォルトは true です。

                                    <p:form

                                           xmlns:p="http://jboss.com/products/seam/pdf"

                                           URL="http://localhost/Concept/form.pdf">

                                        <p:field name="person.name" value="Me, myself and I"/>

                                    </p:form>

## 18.5. Swing/AWT コンポーネントをレンダリングする

Seam は Swing コンポーネントを PDF イメージにレンダリングするサポートを実験的に提供するようになります。 いくつかの外観サポート、 特にネイティブウィジェットを使用するものは正しいレンダリングを行いません。

`<p:swing>` | 詳細 Swing コンポーネントを PDF ドキュメントにレンダリングします。 属性 `width` — レンダリングされるコンポーネントの幅です。 `height` — レンダリングされるコンポーネントの高さです。 `component` — Swing または AWT コンポーネントが値となる式です。 使い方
    <p:swing width="310" height="120" component="#{aButton}" />

## 18.6. iText を設定する

ドキュメントの生成は特に設定を必要とすることなく、 そのまま動作させることができます。 ただし、 本格的なアプリケーションには必要となる設定ポイントがいくつかあります。

デフォルト実装では汎用 URL `/seam-doc.seam` から PDF ドキュメントを提供します。 ブラウザの多くは `/myDocument.pdf` などのように実際の PDF 名を含んでいる URL を表示する傾向にあり、 またユーザーもそれを好みます。 これを行うにはいくつかの設定を必要とします。 PDF ファイルを提供するにはすべての `*.pdf` リソースが DocumentStoreServlet にマッピングされなければなりません。

    <servlet>

        <servlet-name

    >Document Store Servlet</servlet-name>

        <servlet-class

    >org.jboss.seam.document.DocumentStoreServlet</servlet-class>

    </servlet>

    <servlet-mapping>

        <servlet-name

    >Document Store Servlet</servlet-name>

        <url-pattern

    >*.pdf</url-pattern>

    </servlet-mapping

    >

ドキュメントストアのコンポーネントにある `use-extensions` オプションはドキュメントストアに生成されるドキュメントタイプの正しいファイル名拡張子を付けて URL を生成するよう指示することでこれを行います。

    <components xmlns="http://jboss.com/products/seam/components"

        xmlns:document="http://jboss.com/products/seam/document"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xsi:schemaLocation="

            http://jboss.com/products/seam/document http://jboss.com/products/seam/document-2.2.xsd

            http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.2.xsd">

        <document:document-store use-extensions="true"/>

    </components

    >

ドキュメントストアは対話スコープにドキュメントを格納し、 対話が終了するとドキュメントが終了します。 この時点でドキュメントへの参照は無効になります。 `documentStore` の `error-page` プロパティを使ってドキュメントが存在しない場合にデフォルトのビューが表示されるよう指定することができます。

    <document:document-store use-extensions="true" error-page="/documentMissing.seam" />

## 18.7. その他のドキュメント

iText に関する詳細は、 次を参照してください。

- iText ホームページ

- iText in Action (実行可能なデモ)

- 前のページ第17章 Seam Text
- 上に戻る
- ホーム
- 次のページ第19章 Microsoft® Excel® スプレッドアプリケーション