XSL Formatter V4 グラフィックス・サポート
外部ファイルとして存在するグラフィクスは、いずれも <fo:external-graphic> の src プロパティや、<fo:simple-page-master> の axf:background-image プロパティに指定することができます。 XSL Formatter V4 は、画像の種類を自動的に判定します。 content-typeプロパティの値が指定されているときは、それを仮定しますが、矛盾していないかどうかの判定は行います。その結果、指定が矛盾していた場合は、さらに自動判定を行います。 HTTP経由の画像の場合は、content-typeをHTTPヘッダから取得できます。そのときは、プロパティの値より優先してそれを仮定します。
<fo:external-graphic> の src プロパティや、<fo:simple-page-master> の axf:background-image プロパティには、dataスキーム(RFC2397)を指定することができます。つまり、外部ファイルを用意することなく、グラフィックファイルの内容を直接FO中に指定することができます。
<fo:external-graphic src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAB 3RJTUUH1AIFCDIuN9BfzQAAAAlw ... ="/>
dataスキーム中にメディアタイプを指定する必要はありませんが、指定してある場合は、それを仮定します。
JarURLConnection で定義される jarスキームを指定できます。これは、JARまたはZIPに有効で、その中のエントリを指定できます。V4
jar:http://www.foo.com/bar/baz.jar!/COM/foo/Quux.png
最初の区切り !/ 以降をエントリ指定とみなします。JARまたはZIPの入れ子には対応していません。
XSL Formatter V4 がサポートしているグラフィクスは以下のとおりです。特に明記されていない場合は、Windows版、Solaris/Linux/Macintosh/HP-UX/AIX版いずれでもサポートされています。
指定された画像が存在しないなどの理由で取得できないときは、ダミー画像が代わりに表示されます。ただし、background-image に指定された画像のときはダミー画像は表示されません。
BMP
Windows Bitmap に対応しています。content-type は " image/bmp" です。
JPEG
JFIF (JPEG File Interchange Format) に対応しています。 content-type は "image/jpeg" です。
JPEG2000
次の形式のJPEG2000に対応しています。
- JP2 (content-type は "image/jp2" です)
GUIでは、ダミー画像が表示されます。
PNG
Portable Network Graphics Format に対応しています。 以下の制約があります。
- αチャネル情報は、PDF1.4以上で有効となります。
- 16ビットカラーは8ビットカラーに切り詰められます。
content-type は "image/png" です。
TIFF
TIFF Revision 6.0 仕様のTIFFファイルに対応しています。
- 非圧縮形式
- PackBits圧縮
- Modified Huffman
- CCITT Group3 1D
- CCITT Group3 2D
- CCITT Group4
- JPEG圧縮
- LZW圧縮
- ZIP圧縮
下記のカラー表現を処理します。
- グレイスケール
- RGB
- CMYK
- YCbCr
- CIE L*a*b*
以下の制約があります。
- 以下の形式には対応していません。
- Tiled Image
- Planar Configuration=2(Planar format)
- PDF出力時、YCbCr画像はRGB画像に変換されます。
- αチャネル情報は、PDF1.4以上で有効となります。
- 16ビットカラーは8ビットカラーに切り詰められます。
- マルチページのTIFFは最初のページのみ表示します。
- 拡張されたTIFF は正しく読めない場合があります。
content-type は "image/tiff" です。
GIF
Graphics Interchange Format に対応しています。 以下の制約があります。
- アニメーションGIFは、最初のページのみ表示されます。
content-type は "image/gif" です。
WMF
Windows Metafile に対応しています。 PDF、SVG へはベクタイメージで出力されるので、画質の劣化はありません。 以下のような制約があります。
- ペンの幅は、水平方向の値のみを使用します。ペン幅 0.0のときは、描画を行いません。
- ブラシに指定されたビットマップは無視されます。
- 正しい物理サイズが計算されないことがあります。
- 複数のクリップ矩形には対応していません。
- ラスタオペレーションには対応していません。コピー元データをそのまま描画します。
- 文字のクリッピングはしません。
- 文字の背景は常に透明です。
- ベースラインに対する文字の回転には対応していません。
なお、gzip圧縮されたWMF(WMZ)にも対応しています。 content-type は "image/wmf" です。
EMF
Enhanced Metafile に対応しています。 PDF、SVG へはベクタイメージで出力されるので、画質の劣化はありません。 以下のような制約があります。
- ペンの幅は、水平方向の値のみを使用します。ペン幅 0.0のときは、描画を行いません。
- ブラシに指定されたビットマップは無視されます。
- 正しい物理サイズが計算されないことがあります。
- ラスタオペレーションには対応していません。コピー元データをそのまま描画します。
- 文字のクリッピングはしません。
- 文字の背景は常に透明です。
- ベースラインに対する文字の回転には対応していません。
- パス描画に対するクリッピングなどには対応していません。
なお、gzip圧縮されたEMF(EMZ)にも対応しています。 content-type は "image/emf" です。
EPS
Encapsulated PostScript に対応しています。 EPS に表示イメージがあるとき、そのイメージを出力します。表示イメージが存在しない場合は、ダミーの画像に置き換えられます。 ただし、Adobe Distiller や PSプリンタでの出力を行った場合は、表示イメージではなく、EPS中のPostScriptプログラムを出力します。
EPSをPDFへ出力するとき、Adobe DistillerやGhostscriptがインストールされている環境では、それらを利用することができます。そのとき、EPSをEPSとしてPDFへ埋め込むことができます。
FO中に、EPSコードを直接記述することが可能です。このことによって、Adobe Distiller などで、EPSコードをそのままPDFに埋め込むことができます。 これは、<fo:instream-foreign-object> を利用して次のように行います。
<fo:instream-foreign-object><![CDATA[%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 84 43 %%Pages: 0 %%Creator: Antenna House %%Title: Green Rounded Box %%CreationDate: 10 Feb 2003 %%LanguageLevel: 2 %%EndComments %%BeginProlog %%EndProlog %%BeginSetup %%EndSetup %%Page: 1 1 %%BeginPageSetup %%EndPageSetup 0 128 0 setrgbcolor 0.1 setlinewidth newpath 0 5 moveto 0 43 84 43 5 arct 84 43 84 0 5 arct 84 0 0 0 5 arct 0 0 0 43 5 arct closepath gsave stroke grestore fill %%PageTrailer %%Trailer %%EOF ]]> </fo:instream-foreign-object>
CDATAセクションは、必ずしも設ける必要はありませんが、そのときは適切な文字参照などを行ってください。
EPSはさまざまなソフトウエアで作成できますので、XSL Formatter V4 で正しく読めない可能性もあります。 Solaris/Linux/Macintosh/HP-UX/AIX版では、表示イメージのないEPSには対応していません。
content-type は "application/postscript" です。
SVG
Scalable Vector Graphics (SVG) 1.1 に対応しています。 独自開発したエンジンにより描画するため、PDF中へのイメージを高い解像度で描画することが可能です。 詳細は、「SVG仕様の実装状況」を参照してください。 なお、gzip圧縮されたSVGにも対応しています。
FO中に、SVGを直接記述することが可能です。 これは、<fo:instream-foreign-object> を利用して次のように行います。
<fo:instream-foreign-object width="100mm" height="100mm" content-width="96mm" content-height="72mm" display-align="center" text-align="center"> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 360"> <circle cx="100" cy="100" r="50" fill="none" stroke="black" /> <circle cx="220" cy="100" r="35" fill="red" stroke="black" /> <circle cx="340" cy="100" r="20" fill="black" stroke="lime" stroke-width="4" /> <circle cx="100" cy="260" r="20" stroke="lime" fill="yellow" stroke-width="4" /> <circle cx="220" cy="260" r="35" stroke="none" fill="blue" /> <circle cx="340" cy="260" r="50" stroke="red" fill="none" stroke-width="10" /> </svg> </fo:instream-foreign-object>
SVGかどうかの判定は、svgタグに正しいxmlnsが記述してあればSVGとみなします。そうでない場合は、SVGとはみなされません。
DOCTYPE宣言を含めるときは、次のようにCDATAセクションで囲んでください。(SVG1.1の例)
<fo:instream-foreign-object> <![CDATA[ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 360"> ... </svg> ]]> </fo:instream-foreign-object>
代表的な content-type は "image/svg+xml" です。
MathML
Mathematical Markup Language (MathML) 2.0 に対応しています。「XSL Formatter MathML オプション」の組み込まれている環境では、MathMLを独自開発したエンジンにより描画するため、PDF中へのイメージを高い解像度で描画することが可能です。詳細は、「MathML仕様の実装状況」を参照してください。
FO中に、MathMLを直接記述することが可能です。 これは、<fo:instream-foreign-object> を利用して次のように行います。
<fo:instream-foreign-object> <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> <mi>y</mi><mo>=</mo><mi>x</mi><mo>−</mo><mn>1</mn> </mrow> </math> </fo:instream-foreign-object>
MathMLかどうかの判定は、mathタグに正しいxmlnsが記述してあればMathMLとみなします。そうでない場合は、MathMLとはみなされません。
DOCTYPE宣言を含めるときは、次のようにCDATAセクションで囲んでください。
<fo:instream-foreign-object> <![CDATA[ <!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/mathml2.dtd"> <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> <mi>y</mi><mo>=</mo><mi>x</mi><mo>−</mo><mn>1</mn> </mrow> </math> ]]> </fo:instream-foreign-object>
「XSL Formatter MathML オプション」の組み込まれていない場合、 Windows版で、MathPlayer plug-in がインストールされている環境では、MathPlayer の描画をラスタイメージとしてPDFに出力します。
- MathPlayerはこちらからダウンロードできます。
- MathPlayer plug-in を使用する場合は、Internet Explorer 6 以上をインストールしておくことをお勧めします。それ以外では MathML のイメージが崩れることがあります
- MathPlayer plug-in を使う方法は、Solaris/Linux/Macintosh/HP-UX/AIX版では対応していません。
代表的な content-type は "application/mathml+xml" です。
CGM
-
CGMオプションがインストールされていない場合
ISO8632(JIS X 4211~4213)で定められている Computer Graphics Metafile に対応しています。 Windows版で、以下のプラグインのいずれかがインストールされている環境で描画可能です。 Solaris/Linux/Macintosh/HP-UX/AIX版では対応していません。 PDFへはラスタイメージに変換されて出力されます。
- ActiveCGM (http://www.corel.com/)
- IsoView / IsoView WebCGM (http://www.isodraw.com/)
- Larson VizEx CGM Viewer (https://www.cgmlarson.com/)
-
CGMオプションがインストールされている場合
CGM オプションがインストールされている場合、CGM画像はベクター画像としてPDFに埋め込まれます。ラスター化されないため画像の劣化は発生しません。
CGM オプションはWindowsだけでなく、すべてのXSL Formatter V4.3稼動プラットフォームでご使用いただけます。詳細は、XSL Formatter CGM オプションページをご覧ください。またCGMの実装状況の詳細は「CGMの実装状況」をご覧ください。
content-type は "image/cgm" です。
画像ではありませんが、XSL Formatter V4 は、PDFを画像のように扱うことができます。 XSL Formatter V4 でのPDF出力についてを参照してください。
content-type は "application/pdf" です。
Excelチャート
「XSL Formatter チャートオプション」の組み込まれている環境では、Microsoft® Excel のチャートを描画することができます。チャートはベクタで描画されるので、拡大縮小等による画質の劣化はありません。 例えば、次のように <fo:external-graphic> に指定します。
<fo:external-graphic src="MyBook.xls#sheet=2&chart=3"/>
この例では、2番目のシートにある 3番目のチャートを指定しています。 先頭のシートは1、最初のチャートは1で示されます。 sheetが指定されていない場合は、最初にチャートが含まれるシートが選択されます。 chartが指定されていない場合は、指定されたシートに含まれる最初のチャートが選択されます。 両方が指定されていない場合は、そのブックに含まれる最初のチャートが選択されます。このときは、フラグメントを省略して次のように指定できます。
<fo:external-graphic src="MyBook.xls"/>
以下のExcelのバージョンに対応しています。
- Excel 97
- Excel 2000
- Excel 2002
- Excel 2003
以下の制約があります。
- 等高線グラフは正しく表示されません。
- 表示されるグラフ(特に3Dグラフ)のサイズ、位置、縦横比、角度等がExcelの表示と若干異なる場合があります。
- データテーブルの表示には対応していません。
- 軸目盛の表示単位には対応していません。
- 値以外のデータラベルは表示できません。またバブルチャートにおける複数の値データラベル表示には対応していません。
- データラベルの凡例マーカー表示には対応していません。
- グラデーション、テクスチャなどの複雑な塗りつぶし効果には対応していません。
- 軸ラベルの縦書きには対応していません。
- 階層項目ラベルは正しく表示されない場合があります。
- 軸目盛の最小値/最大値、目盛間隔などがExcelと異なる場合があります。
- 複合チャートは凡例アイテムが正しい順番で表示されない場合があります。
- 誤差範囲のカスタム指定(セル範囲による指定)には対応していません。
- データラベルの表示位置がExcelと異なる場合があります。
- 線スタイルの下方3パターンには対応していません。
- 軸ラベルフォントの「上付き」「下付き」には対応していません。
- グラフエリアの「角を丸くする」には対応していません。
- 近似曲線の数式表示には対応していません。
content-type は "application/vnd.ms-excel" です。
グラフィックス・ファイルのサンプル
XSLのサンプルについては、XSLサンプルのページをご覧ください。