『XSL-FOの基礎』画像制作のこと。Word経由でインポートした画像は印刷品質の劣化が激しいため、第2版ではできるだけSVG形式に変更した件。


『XSL-FOの基礎』は初版は2016年5月に初版をリリースしましたが、今回は大幅に改訂して第2版となります。改訂の一部として、多くの画像をラスターからベクトル(SVG形式)に変更しました。以下、このことを少し説明します。

本書にはXSL-FOのオブジェクトとプロパティの説明の一部として組版結果の紹介をしています。例えば、こんな感じです。

組版結果はPDFです。初版では、組版結果の多くはPDFを表示して画像スクリーンキャプチャしていました。最初のうち原稿をWordで書いていましたので、スクリーンから切り取ってWordに貼り付けていたものもあります。原稿のWord文書をCAS-UBで取り込んだとき、このラスター画像もCAS-UBに取り込まれます。途中からはCAS-UBで原稿を直接書いて編集しましたので、スクリーンをキャプチャしてPNGファイルとして取り込んだものもあります。初版の画像制作は、主に次のようなフローになります。

こうした画像を画面で見ている限りでは、それほど見栄えに差がないのですが、プリントオンデマンドで紙に出力しますと画像の品質の差が歴然となります。Wordに貼り付けて(CAS-UBのWordインポートで)CAS-UBに取り込んだ画像は品質が非常に悪くなります。一方、PNGファイルをCAS-UBに取り込むときは、印刷したときの画像の品質はPNGの精度(ピクセル数)次第です。特に、文字がはいっているような画像は品質が低いと問題があります。

ということで第2版ではできるだけPDFからベクトル画像(SVG)を作ることにしました。SVGを作る方法はいろいろあると思いますが。今回は自社開発のPDFビューアのSVG切り出し機能を使いました[PDF加工画像化ツール]。この操作は次のようになります。


図1 PDFを開く


図2 SVGにしたい範囲を選択


図3 SVG形式で保存

SVGにした画像はPNG形式も用意しています。PDF生成時はSVG形式を使い、EPUB生成時にはPNGに差し替えるようにしました。残念ながらKindleではSVGを正しく表示できないことがあるためです。

SVGからPNGへの変換は「置換」機能を使います。

複数の画像ファイルを用意しておき、出力形式によって画像を使い分ける機能はCAS-UBのWeb制作サービスの中に取り込んでいきたいものです。これは次のバージョンアップの課題の一つといたします。

参考資料
1. 技術書典2と『PDFインフラストラクチャ解説』第1.1版、『XSL-FOの基礎 第二版』のご紹介
2. 『XSL-FO の基礎 – XML を組版するためのレイアウト仕様』

『XSL-FOの基礎』画像制作のこと。Word経由でインポートした画像は印刷品質の劣化が激しいため、第2版ではできるだけSVG形式に変更した件。” への2件のコメント

  1. Test1 JPEG画像をWord2013に挿入、Wordで画像の表示サイズを小さくする⇒Wordのdocxを解凍してみる。
    1)元のJPEGファイルは、1536×2056px
    2)docx中のJPEGファイルは、860×1151px
    元のファイル名:01ae5ff674a4119c21f57fb4c073120c467d27f325.jpg
    docx中のファイル名:image1.jpeg

    Test2 JPEG画像をWord2013に挿入⇒Wordで画像の表示サイズにはなにもしない⇒Wordのdocxを解凍してみる。 
    1)元のJPEGファイルは、2448×3264px
    2)docx中のJPEGファイルは、2448×3264px
    画像のピクセル数は変らない。
    ということは、Wordで画像の表示サイズを変更する操作に依存する?

    Test3 PNG画像をWord2013に挿入⇒Wordで画像の表示サイズにはなにもしない⇒Wordのdocxを解凍してみる。 
    1)元のPNGファイルは、481×503px
    2)docx中のJPEGファイルは、481×503px
    変化なし

    Test3 PNG画像をWord2013に挿入⇒Wordで画像の表示サイズにはなにもしない⇒Wordのdocxを解凍してみる。 
    1)元のPNGファイルは、850×466px
    2)docx中のJPEGファイルは、850×466px

    PNGだと操作によらず一定か?
    JPEGだと操作によって変る?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA値として計算に合う値を入力してください。 *