グラフィクス

外部ファイルとして存在するグラフィクスは、いずれも <fo:external-graphic>src プロパティや、<fo:simple-page-master>axf:background-image プロパティに指定することができます。 AH Formatter V7.1 は、画像の種類を自動的に判定します。 content-typeプロパティの値が指定されているときは、それを仮定しますが、矛盾していないかどうかの判定は行います。その結果、指定が矛盾していた場合は、さらに自動判定を行います。 HTTP経由の画像の場合は、content-typeをHTTPヘッダから取得できます。そのときは、プロパティの値より優先してそれを仮定します。

外部ファイルがXMLのときは、フラグメントを指定することができます。例えば、

<?xml version="1.0"?>
<root>
 ...
 <m:math id="math-1" xmlns:m="http://www.w3.org/1998/Math/MathML">
  ...
 </m:math>
 ...
</root>

のような、XML中に含まれているMathML部分を

<fo:external-graphic src="url('file.xml#math-1')"/>

のようにして参照することができます。

<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スキーム中にメディアタイプ(content-type)を指定する必要はありませんが、指定してある場合は、それを仮定します。

dataスキームと jarスキームに関しては、URIを参照してください。

AH Formatter V7.1 が読み込みをサポートしているグラフィクスは以下のとおりです。 特に明記されていない場合は、Windows版、非Windows版いずれでもサポートされています。

  PDF出力での画像の扱いについては、PDF出力イメージ出力を参照してください。
  SVG出力での画像の扱いについては、SVG出力イメージ出力を参照してください。
  PostScript出力での画像の扱いについては、PostScript®出力イメージ出力を参照してください。
  XPS出力での画像の扱いについては、XPS出力イメージ出力を参照してください。

指定された画像が存在しないなどの理由で取得できないときは、代替画像が代わりに表示されます。 ただし、background-image に指定された画像のときは代替画像は表示されません。

BMP

Windows Bitmap に対応しています。 content-type は "image/bmp" です。

JPEG

JFIF(JPEG File Interchange Format)に対応しています。 content-type は "image/jpeg" です。

JPEG 2000

次の形式のJPEG 2000に対応しています。

  • JP2(content-type は "image/jp2" です)

WebP

WebPに対応しています。 以下の制約があります。

  • アニメーションWebPは、最初のフレームのみ表示されます。

content-type は "image/webp" です。

PNG

PNG(Portable Network Graphics Format)に対応しています。 以下の制約があります。

  • 16ビットカラーは8ビットカラーに切り詰められます。

content-type は "image/png" です。

TIFF

TIFF Revision 6.0 仕様のTIFFファイルに対応しています。

  • 非圧縮形式
  • PackBits圧縮
  • Modified Huffman
  • CCITT Group3 1D
  • CCITT Group3 2D
  • CCITT Group4
  • JPEG圧縮
  • OLD JPEG圧縮
  • LZW圧縮
  • ZIP圧縮

下記のカラー表現を処理します。

  • グレイスケール
  • RGB
  • CMYK
  • YCbCr
  • CIE L*a*b*

以下の制約があります。

  • 以下の形式には対応していません。
    • Tiled Image
    • Planar Configuration=2 (Planar format)
  • PDF出力時、YCbCr画像はRGB画像に変換されます。
  • 16ビットカラーは8ビットカラーに切り詰められます。
  • マルチページのTIFFは最初のページのみ表示します。
  • 拡張されたTIFF は正しく読めない場合があります。

content-type は "image/tiff" です。

GIF

Graphics Interchange Format に対応しています。 以下の制約があります。

  • アニメーションGIFは、最初のページのみ表示されます。

content-type は "image/gif" です。

WMF

Windows Metafile に対応しています。 PDF、SVG、PostScript へはベクタイメージで出力されるので、画質の劣化はありません。 以下のような制約があります。

  • ペンの幅は、水平方向の値のみを使用します。ペン幅 0.0のときは、描画を行いません。
  • ブラシに指定されたビットマップは無視されます。
  • 正しい物理サイズが計算されないことがあります。
  • 複数のクリップ矩形には対応していません。
  • ラスタオペレーションには対応していません。コピー元データをそのまま描画します。
  • 文字のクリッピングはしません。
  • 文字の背景は常に透明です。
  • ベースラインに対する文字の回転には対応していません。

なお、gzip圧縮されたWMF(WMZ)にも対応しています。 content-type は "image/wmf" です。

EMF

Enhanced Metafile に対応しています。 PDF、SVG、PostScript へはベクタイメージで出力されるので、画質の劣化はありません。 以下のような制約があります。

  • ペンの幅は、水平方向の値のみを使用します。ペン幅 0.0のときは、描画を行いません。
  • ブラシに指定されたビットマップは無視されます。
  • 正しい物理サイズが計算されないことがあります。
  • ラスタオペレーションには対応していません。コピー元データをそのまま描画します。
  • 文字のクリッピングはしません。
  • 文字の背景は常に透明です。
  • ベースラインに対する文字の回転には対応していません。
  • パス描画に対するクリッピングなどには対応していません。

なお、gzip圧縮されたEMF(EMZ)にも対応しています。 content-type は "image/emf" です。

EPS

Encapsulated PostScript に対応しています。 EPS に表示イメージがあるとき、そのイメージを出力します。表示イメージが存在しない場合は、代替画像に置き換えられます。 ただし、Adobe Distiller や PSプリンタへの出力、またはPostScript®出力では、表示イメージではなく、EPS中のPostScriptプログラムを出力します。

EPSをPDFへ出力するとき、Adobe DistillerやGhostscriptがインストールされている環境では、それらを利用することができます。そのとき、EPSをPDFとしてPDFへ埋め込むことができます(ただし、タグ付きPDFへ埋め込むことはできません)。オプション設定ファイルEPS-processorを設定してください。

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はさまざまなソフトウェアで作成できますので、AH Formatter V7.1 で正しく読めない可能性もあります。

content-type は "application/postscript" です。

SVG

Scalable Vector Graphics (SVG) 1.1 に対応しています。 独自開発したエンジンにより描画するため、PDF、PostScript へのイメージを高い解像度で描画することが可能です。 詳細は、「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>

FOでのSVGかどうかの判定は、<svg> 要素が正しいSVGの名前空間を持っているかどうかによります。正しいSVGの名前空間を持っていればSVGとみなし、そうでない場合はSVGとはみなされません。 HTML中では、<svg> タグだけでSVGと判断されます。

DOCTYPE宣言を含めるときは、次のようにCDATAセクションで囲んでください(SVG 1.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) Version 3.0 2nd Edition に対応しています。 MathMLを独自開発したエンジンにより描画するため、PDF、SVG、PostScript へのイメージを高い解像度で描画することが可能です。 詳細は、「MathML仕様の実装状況」を参照してください。 MathMLのレンダリングに関する微調整等は、「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>&#x2212;</mo><mn>1</mn>
</mrow>
</math>
</fo:instream-foreign-object>

FOでのMathMLかどうかの判定は、<math> 要素が正しいMathMLの名前空間を持っているかどうかによります。正しいMathMLの名前空間を持っていればMathMLとみなし、そうでない場合はMathMLとはみなされません。 HTML中では、<math> タグだけでMathMLと判断されます。

DOCTYPE宣言を含めるときは、次のようにCDATAセクションで囲んでください。

<fo:instream-foreign-object>
<![CDATA[
<!DOCTYPE math PUBLIC "-//W3C//DTD MathML 3.0//EN"
  "http://www.w3.org/Math/DTD/mathml3/mathml3.dtd">
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mrow>
 <mi>y</mi><mo>=</mo><mi>x</mi><mo>&minus;</mo><mn>1</mn>
</mrow>
</math>
]]>
</fo:instream-foreign-object>

代表的な content-type は "application/mathml+xml" です。

CGM

ISO/IEC 8632:1999(JIS X 4211~4213)で定められている Computer Graphics Metafile、および WebCGM 2.1 に対応しています。 CGM画像はベクタ画像としてPDFに埋め込まれます。ラスタ化されないため画像の劣化は発生しません。 詳細は「CGM仕様の実装状況」を参照してください。 対象とするCGMファイルのエンコーディングは、ISO/IEC 8632-3:1999で定められたバイナリエンコーディングのみです。 なお、gzip圧縮されたCGMにも対応しています。

content-type は "image/cgm" です。

PDF

画像ではありませんが、AH Formatter V7.1 は、PDFを画像のように扱うことができます。 PDFの埋め込みを参照してください。

PDF の表示および印刷結果には以下の制約があります。また、 PostScript, SVG, XPS フォーマットへの出力時に、画像として埋め込まれているPDF にも同様の制限があります。

  • テキスト
    • テキストレンダリングモードの、"Path for Clipping" には対応していません。
  • グラフィックファイル
    • 元画像と明示マスク画像のサイズが異なる場合には対応していません。
    • ディスプレイが32ビット未満の場合、印刷ではブレンド部分が正しく出力できません。
    • 塗りつぶしパターンは対応していません。
    • Form XObjectには対応していません。
    • オプショナルコンテントには対応していません。グループごとに可視、不可視を選択することはできません。
    • DCTDecode形式やJPXDecode形式のイメージは、カラースペースにより表示できない場合があります。
    • すべてのグラフィック機能には対応していません。
  • 宛先、文書アウトライン、サムネールイメージの表示には対応していません。
  • 対話フォームには対応していません。

content-type は "application/pdf" です。

Video/Audio

ビデオやオーディオなどのマルチメディアデータをPDFへ埋め込むことができます。 マルチメディアを参照してください。