Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
基礎勉強会忘年会
PDF開発の基礎
合同会社フィールドワークス
梶田健史
自己紹介
梶田健史(かじたけんじ)
仕事 合同会社フィールドワークス プログラマ兼代表
Blog http://field-notes.hatenablog.jp/
Twitter @field_works

!

合同会社フィールドワークス / ...
本日の発表内容
PDF開発ツールの現状
PDF開発の基礎
PDFの概要
PDFファイルの構造
PDFの構成要素
弊社製品のご紹介(PR)
まとめ
PDF開発ツールの現状
PDF開発ツールの選定
システム開発において,まだまだ紙の帳票が必要とされる場面があります。
納品書・請求書
銀行のステートメント
チラシ・DM
⇒タブレット端末・PCを持たないユーザが少数でもいる分野では,
 紙での出力手段も用意せざるを得な...
(1) 既存アプリケーションの力を借りる
PDF生成機能を持ったアプリケーションを使う
OpenOffice.org
Adobe Illustrator
⇒API・スクリプトにより自動処理を行う。
PDF仮想プリンタドライバを通して印刷を掛ける
...
(2) 帳票開発ツールを使う
非常に種類が多いが,ほとんど商用製品。
Crystal Reports(ビジネスオブジェクツ社)
Super Visual Formade(ウィングアークテクノロジーズ社)
InterstageList Creat...
(3) PDFライブラリを利用して自力で実現
描画API

グラフィック・テキストを描画するAPIを提供
Haru,Prawn(Ruby),iText(Java, .Net)
Cairo
PDF編集ライブラリ

PDFファイルを操作するためのロ...
結局どれを使えばいいんだろう?
定番はどれ? なんでこんなに種類があるの?
⇒ひょっとして玉石混淆状態?
どうやって絞り込めばいいんだろう?

⇒選定基準がわからない。

⇒価格と性能は比例しているんだろうか?
PDF開発の現実
本当は怖いPDF開発
PDF開発の罠
出力するPDFの品質は,ツールによってまちまち

⇒(運が悪いと)互換性の問題に遭遇する危険性

 ex. Macで開いたらレイアウトが崩れた。
ツールによって,PDF仕様の実装レベル(カバー率)も様々

...
なぜ互換性の問題が発生するのか?
•

•

•

•

PDFは最終的な出力結果がイメージなので,機械的な検証が困難

⇒Adobe製品で問題なければきっと大丈夫だろう。
ところが!
Adobe Readerは間違ったPDFに寛容(ex.初期...
非互換性の発生事例
Adobe Readerでは問題ないが,弊社製品で処理するとエラーになる例
相互参照がずれている!
詳しくは後述

ストリームオブジェクトのLengthが合ってない!
endobjがない!
PDF仕様には適合しているはずなの...
なぜ,ツールによって実装レベルがまちまちなのか?
PDFの仕様が大きく複雑だから。
(1)レガシー仕様の存在
LZWデコードフィルタ
CCITT Group4, JBIG2
PostScript関数

⇒他にもまず使わないような仕様がたくさんあ...
PDFの現実と戦うために基礎を学びましょう
既存プロダクトを評価する際の観点がわかります。
実際に問題に遭遇した場合に,自分で原因の特定ができるようになります。
オープンソースであれば,自ら修正することも可能になります。
市販製品であっても,バ...
PDF開発の基礎
PDFの概要
PDFの歴史
PostScriptの略歴
1985 PostScript Level 1 ̶ 同年,Apple LaserWriter発売
1990 PostScript Level 2 ̶ 日本語,カラー化対応
1996 PostScript...
EPSの例
PDFの略歴
1993 PDF1.0
1994             Acrobat Readerの無償配布を開始
1996 PDF 1.2, Acrobat 3.0 日本語対応
2004 PDF 1.6, Acrobat 7.0 低価格帯P...
PDFの特徴
PostScriptから命令数を大幅に削減


JavaScriptとJSONの関係
にちょっと似ている

(プログラミング言語としての特性も失う)
ページへのランダムアクセスを考慮(目次,リンク)
ファイルサイズを小さくできる(...
資料
PDFリファレンス第2版
日本語で読める唯一のPDF仕様書
内容はPDF 1.3版の仕様なのでかなり古い。
⇒英語版のPDF Referenceは,Adobeのサ
イトから無料でダウンロードできる。
PDF構造解説
読んでいないので,内容...
ツール
PDFtk

PDFの結合・分解などの加工ができるツール 

圧縮されたPDFを解凍する機能があり,解析の際に非常に助かる。
テキストエディタ

バイナリファイルも開けるものが望ましい。

⇒pdftk.vim:自動でPDFtkを実行し...
PDFファイルの構造
ファイル構造
(1) ヘッダ部
コメント行:

1行目は,PDFのバージョンを示す。

2行目は,バイナリデータを含むことを示す。
8種類の基本型オブジェクト:

論理値(true/false),数値,文字列,名前,
配列,辞書,ストリーム,ヌ...
ファイル構造
(2) ファイルトレーラ
相互参照表:

xrefから始まるテーブル
startxrefの次の数値:相互参照表の位置
テーブル要素:

間接オブジェクトの位置を示す。
トレーラ辞書:

キーワードtrailerの後の辞書
Info...
ファイル構造
(3)ページ辞書
ページツリーは「平衡木」構造を構成する。
平衡木の「葉」の部分にページ辞書がある。
ページ辞書の主な内容:
MediaBox

物理媒体のサイズを示す。
Resources

フォント,画像などのリソースを定義
...
増分更新(1)
通常PDFを変更する時は「増分更新」を行う。
メモリの少ない動作環境への配慮
変更・追加の発生した間接オブジェクトを
「%EOF」移行に追記していく。
CD-Rを追記するイメージ
増分更新(2)
トレーラ辞書のPrevエントリは「前」の相互
参照表の位置を示す。
相互参照表のリンクリストを構成する。
同じオブジェクト番号が出現した場合は「後
ろ」のオブジェクトを使用するルール
「前」「後ろ」は物理的な位置関係とは独立
Web表示用に最適化
PDFのダウンロード中でも先頭ページの表示が
できるようにするための仕様
相互参照表を先頭に配置する。
PDFの構成要素
フォント
PDFは,フォントのサポートが手厚い。
⇒他のフォーマットと差別化できているポイントかも
PDFで使えるフォントの種類
単純フォント
Type 1フォント - 欧文PostScriptフォント
TrueTypeフォント - 欧文Tru...
エンコーディング
エンコーディング = 文字コード→CID(グリフ名)変換テーブル
単純フォント
MacRomanEncoding, MacExpertEncoding,

本来はフォントに内蔵
されているものだが,PDF内
に取り込んでいる形...
CIDとは?
CIDフォントが内蔵する字形(グリフ)毎に
振られた一連の番号
アドビ社は,言語毎に文字コレクションを
定義している。
日本語用は,Adobe-Japan1-*
CIDフォント: GID=CID
TrueTypeフォント:GID=...
グリフメトリックス情報
グリフ(字形)の幅(高さ)の情報
本来はフォントが内蔵している情報だが,PDF内部に取り込んでいる。

⇒指定フォントがない場合(代替フォント)にレイアウトが崩れないよう配慮
グリフデータ
•

•

PDFに劣らぬ厳しい現実が待ち受けている。
PostScriptフォント
Adobeが開発したアウトラインフォントの規格(PostScriptで記述)
バイナリ形式 ⇒CFF(Compact Font Format)
...
フォントサブセット
PDFにフォントデータを埋め込むこと
ができる。
日本語フォントはサイズが大きいので,
サブセット化が必須
サブセット化するには,フォントデー
タから,必要なグリフデータだけを抽
出して再編集する必要がある。

⇒実装は,か...
PDFを構成するその他の要素
グラフィックス

PostScriptのモデルを引き継ぐ

⇒アフィン変換,ベジェ曲線,色(RGB, CMYK, …),シェーディング
イメージ
非可逆形式画像(JPEG, JPEG2000はネイティブ対応)
可逆...
弊社製品のご紹介(PR)
PDFテンプレートエンジン Field Reports
2011年3月より販売しているPDF帳票開発ツール
【用途】中小規模の業務システム・Webサービスでの帳票出力

⇒マルチプラットフォーム/マルチ言語対応(特にLL言語)
【機能】PDFテ...
Field Reportsの主な特長
(1) PDFテンプレート+パラメータ→PDF帳票
(2) 強力なグラフィックス表現
(3) 組版処理

!
•

•

•

•

•

•

【開発目標】日本的な帳票をストレスなく開発できるようにしたい...
(1) PDFテンプレート+パラメータ→PDF帳票

手順1:AcrobatでPDFにフィールドを配置
手順2:プログラミング言語でパタメータを生成
手順3:プログラムを実行
PDF生成時にフィールドはテンプレートのコンテンツと統合される。
(2) 強力なグラフィックス表現

PDFの多彩な表現力を活用
透過表現(画像,テキスト)
アフィン変換(回転,拡大/縮小,変換行列)
ブレンドモード
(3)組版処理
日本語の禁則処理・均等割付
毛筆フォントを縦書き表示
多漢字フォントへの対応

サロゲートペア
異体字セレクタ
グリフ名またはGID/CIDによる直接指定
内部構造

LL言語からは拡張ライブラリとして利用できる。
レンダリング機能本体は,関数型プログラミング言語OCamlで実装
言語Bridgeは,言語毎にCで実装(ソースは公開)
Field Reports 2.0の新機能
2013年末リリース予定(α版?)
組版機能を大幅に強化
リッチテキスト対応
縦組テキストの改善
リッチテキスト機能

PDFテンプレートに流し込む値をXML形式で指定する。

利用可能な要素:body, p, span, div, br, ruby, img
スタイル指定(1)

要素のstyle属性として,

フォント・フォントサイズ・色などの書式指定が可能

例:style= font:KozGoMin; font-size:12; color:red
スタイル指定(2)

font-stretch属性により「長体」の指定が可能
ruby要素
img要素
実際の利用例
業務システムでの帳票出力
➜納品書・請求書など
飲食店向けメニュー作成サービス
➜某飲料メーカーが提供する会員制サービス
オンデマンド印刷(web to print)システム
➜Web上でデザインした名刺などのPDFを直接印刷所に...
デモ
http://labs.field-works.co.jp/atena/

時間があれば…
まとめ
PDFの現実と戦うために,PDFの基礎を学びましょう。
PDFは様々な要素技術の集合体であり,

関心のある技術がいくつかあれば,きっと楽しいはず。
でも,時間を節約したい時は,Field Reportsの採用もご検討ください!
ご清聴ありがとうございました。
Upcoming SlideShare
Loading in …5
×

PDF開発の基礎

11,649 views

Published on

「基礎勉強会忘年会」発表資料
http://connpass.com/event/4097/

Published in: Technology
  • Be the first to comment

PDF開発の基礎

  1. 1. 基礎勉強会忘年会 PDF開発の基礎 合同会社フィールドワークス 梶田健史
  2. 2. 自己紹介 梶田健史(かじたけんじ) 仕事 合同会社フィールドワークス プログラマ兼代表 Blog http://field-notes.hatenablog.jp/ Twitter @field_works ! 合同会社フィールドワークス / Field Works, LLC. 設立 2007年5月 業務内容 PDF関連ソフトウェア製品の企画・開発・販売 ソフトウェア受託開発 URL http://www.field-works.co.jp/ 所在地 愛知県春日井市
  3. 3. 本日の発表内容 PDF開発ツールの現状 PDF開発の基礎 PDFの概要 PDFファイルの構造 PDFの構成要素 弊社製品のご紹介(PR) まとめ
  4. 4. PDF開発ツールの現状
  5. 5. PDF開発ツールの選定 システム開発において,まだまだ紙の帳票が必要とされる場面があります。 納品書・請求書 銀行のステートメント チラシ・DM ⇒タブレット端末・PCを持たないユーザが少数でもいる分野では,  紙での出力手段も用意せざるを得ない。 ! 現在,帳票の出力形式としてはPDFが一般的です。 PDF帳票を作成するには,どんな方法があるのでしょうか? ! !
  6. 6. (1) 既存アプリケーションの力を借りる PDF生成機能を持ったアプリケーションを使う OpenOffice.org Adobe Illustrator ⇒API・スクリプトにより自動処理を行う。 PDF仮想プリンタドライバを通して印刷を掛ける オフィスソフト(Word, Excelなど)
 ⇒スクリプトでコントロールして,差し込み印刷を行う。 組版ソフトの利用 Apache FOP(XSL-FO処理系) TEX→PDF 連続運用は難しい
 ・ライセンス契約 ・エラー回復性
  7. 7. (2) 帳票開発ツールを使う 非常に種類が多いが,ほとんど商用製品。 Crystal Reports(ビジネスオブジェクツ社) Super Visual Formade(ウィングアークテクノロジーズ社) InterstageList Creator(富士通) ThinReports(株式会社マツケイ;OSS,サポート有償) ! ノークリサーチ社調査(2008年)
  8. 8. (3) PDFライブラリを利用して自力で実現 描画API
 グラフィック・テキストを描画するAPIを提供 Haru,Prawn(Ruby),iText(Java, .Net) Cairo PDF編集ライブラリ
 PDFファイルを操作するためのローレベルな機能を提供 CamlPDF (Coherent Graphics社,OCaml; 弊社で採用) PDFMiner (Python)
  9. 9. 結局どれを使えばいいんだろう? 定番はどれ? なんでこんなに種類があるの? ⇒ひょっとして玉石混淆状態? どうやって絞り込めばいいんだろう?
 ⇒選定基準がわからない。
 ⇒価格と性能は比例しているんだろうか?
  10. 10. PDF開発の現実
  11. 11. 本当は怖いPDF開発 PDF開発の罠 出力するPDFの品質は,ツールによってまちまち
 ⇒(運が悪いと)互換性の問題に遭遇する危険性
  ex. Macで開いたらレイアウトが崩れた。 ツールによって,PDF仕様の実装レベル(カバー率)も様々
 ⇒期待していた事ができない!
  ex. 開発終盤になって,PDFにセキュリティを掛けてくれと言われたが
    機能がなかった。
  12. 12. なぜ互換性の問題が発生するのか? • • • • PDFは最終的な出力結果がイメージなので,機械的な検証が困難
 ⇒Adobe製品で問題なければきっと大丈夫だろう。 ところが! Adobe Readerは間違ったPDFに寛容(ex.初期のWebブラウザ) そのため 間違ったPDFを生成するツールが世の中に氾濫! けっきょく 生成したPDFを他のソフトウェアと交換する際に,しばしば問題が発生
  13. 13. 非互換性の発生事例 Adobe Readerでは問題ないが,弊社製品で処理するとエラーになる例 相互参照がずれている! 詳しくは後述 ストリームオブジェクトのLengthが合ってない! endobjがない! PDF仕様には適合しているはずなのに,Adobe製品ではエラーになる例 Adobe Readerが電子署名を認証してくれない! 写植機に送ったら停止してしまった! Adobe製品で動くよ うに直すしかない!
  14. 14. なぜ,ツールによって実装レベルがまちまちなのか? PDFの仕様が大きく複雑だから。 (1)レガシー仕様の存在 LZWデコードフィルタ CCITT Group4, JBIG2 PostScript関数
 ⇒他にもまず使わないような仕様がたくさんあるので,Adobe以外が仕様 を100%カバーするのは,現実的には(主にコスト面で)不可能に近い。 (2)現在のDTP・印刷技術の集大成だから フォント 文字コード セキュリティ
 ⇒複雑な外部仕様を取り込んでいる形なので,仕方のない面も…
  15. 15. PDFの現実と戦うために基礎を学びましょう 既存プロダクトを評価する際の観点がわかります。 実際に問題に遭遇した場合に,自分で原因の特定ができるようになります。 オープンソースであれば,自ら修正することも可能になります。 市販製品であっても,バグの指摘を的確に行うことができます。
  16. 16. PDF開発の基礎
  17. 17. PDFの概要
  18. 18. PDFの歴史 PostScriptの略歴 1985 PostScript Level 1 ̶ 同年,Apple LaserWriter発売 1990 PostScript Level 2 ̶ 日本語,カラー化対応 1996 PostScript Level 3 ̶ PDFとの整合性確保 PostScriptの特徴 ページ記述言語として設計された汎用プログラミング言語 レーザープリンターに搭載され,DTP普及のきっかけとなった PostScriptの問題点 実行に多大なリソースを消費(1990年代当時) ページへのランダムアクセスが困難 後に,EPS(Encapsulated PostScript)という規約を追加したが,
 根本的な解決はならず。
  19. 19. EPSの例
  20. 20. PDFの略歴 1993 PDF1.0 1994             Acrobat Readerの無償配布を開始 1996 PDF 1.2, Acrobat 3.0 日本語対応 2004 PDF 1.6, Acrobat 7.0 低価格帯PDF作成ソフトの発売 2006 PDF 1.7, Acrobat 8.0 2008 ISO 32000-1      ISO標準化 PDF派生(サブセット)規格 PDF/A 長期保存のための規格 PDF/X 印刷向けの規格 一言で言えば, レガシー仕様を省いた規格
  21. 21. PDFの特徴 PostScriptから命令数を大幅に削減
 JavaScriptとJSONの関係 にちょっと似ている (プログラミング言語としての特性も失う) ページへのランダムアクセスを考慮(目次,リンク) ファイルサイズを小さくできる(データ圧縮) 文書交換のための仕様 文書メタデータの付与(タイトル,作者) セキュリティの設定(暗号化) マルチメディア対応 しおり・リンク・コメント・注釈 アクション(JavaScript),対話フォーム 音声,動画,3D PDF
  22. 22. 資料 PDFリファレンス第2版 日本語で読める唯一のPDF仕様書 内容はPDF 1.3版の仕様なのでかなり古い。 ⇒英語版のPDF Referenceは,Adobeのサ イトから無料でダウンロードできる。 PDF構造解説 読んでいないので,内容についてはノーコメン トで。
  23. 23. ツール PDFtk
 PDFの結合・分解などの加工ができるツール 
 圧縮されたPDFを解凍する機能があり,解析の際に非常に助かる。 テキストエディタ
 バイナリファイルも開けるものが望ましい。
 ⇒pdftk.vim:自動でPDFtkを実行して見やすくしてくれる。 バイナリ・エディタ
 画像ファイル・フォントファイルなどの中身を確認 プログラミング言語
 お好みで。
 ⇒弊社では,OCamlを使用
  24. 24. PDFファイルの構造
  25. 25. ファイル構造 (1) ヘッダ部 コメント行:
 1行目は,PDFのバージョンを示す。
 2行目は,バイナリデータを含むことを示す。 8種類の基本型オブジェクト:
 論理値(true/false),数値,文字列,名前, 配列,辞書,ストリーム,ヌル(null) 間接オブジェクト:
 オブジェクトにラベル付けしたもの
 書式:「<オブジェクト番号> <生成番号> obj ∼ endobj」 間接参照:
 間接オブジェクトを参照する場面で使用
 書式:「<オブジェクト番号> <生成番号> R」
  26. 26. ファイル構造 (2) ファイルトレーラ 相互参照表:
 xrefから始まるテーブル startxrefの次の数値:相互参照表の位置 テーブル要素:
 間接オブジェクトの位置を示す。 トレーラ辞書:
 キーワードtrailerの後の辞書 Infoエントリ:文書情報辞書を示す。 Rootエントリ:文書カタログを示す。 Sizeエントリ:間接オブジェクトの総数 IDエントリ:ファイル識別子(ハッシュ値)
  27. 27. ファイル構造 (3)ページ辞書 ページツリーは「平衡木」構造を構成する。 平衡木の「葉」の部分にページ辞書がある。 ページ辞書の主な内容: MediaBox
 物理媒体のサイズを示す。 Resources
 フォント,画像などのリソースを定義 Contents
 ページの内容を描画する命令列
  28. 28. 増分更新(1) 通常PDFを変更する時は「増分更新」を行う。 メモリの少ない動作環境への配慮 変更・追加の発生した間接オブジェクトを 「%EOF」移行に追記していく。 CD-Rを追記するイメージ
  29. 29. 増分更新(2) トレーラ辞書のPrevエントリは「前」の相互 参照表の位置を示す。 相互参照表のリンクリストを構成する。 同じオブジェクト番号が出現した場合は「後 ろ」のオブジェクトを使用するルール 「前」「後ろ」は物理的な位置関係とは独立
  30. 30. Web表示用に最適化 PDFのダウンロード中でも先頭ページの表示が できるようにするための仕様 相互参照表を先頭に配置する。
  31. 31. PDFの構成要素
  32. 32. フォント PDFは,フォントのサポートが手厚い。 ⇒他のフォーマットと差別化できているポイントかも PDFで使えるフォントの種類 単純フォント Type 1フォント - 欧文PostScriptフォント TrueTypeフォント - 欧文TrueTypeフォント Type 3フォント - PDFグラフィック命令で定義したフォント コンポジットフォント Type 0フォント - CJK OpenTypeフォント フォント = エンコーディング + メトリックス情報 + グリフ(字形)
  33. 33. エンコーディング エンコーディング = 文字コード→CID(グリフ名)変換テーブル 単純フォント MacRomanEncoding, MacExpertEncoding, 本来はフォントに内蔵 されているものだが,PDF内 に取り込んでいる形に WinAnsiEncoding, 内蔵エンコーディングから選択 コンポジットフォント 定義済みCMap:
 (マルチバイト系)83pv-RKSJ-H, 90ms-RKSJ-H, EUC-H, H,…
 (Unicode系)UniJIS-UCS2-H,UniJIS−UTF16-H,…
 (CID直接指定)Identity-H,Identity-V *-V は縦書きを示す
  34. 34. CIDとは? CIDフォントが内蔵する字形(グリフ)毎に 振られた一連の番号 アドビ社は,言語毎に文字コレクションを 定義している。 日本語用は,Adobe-Japan1-* CIDフォント: GID=CID TrueTypeフォント:GID=独自体系
  35. 35. グリフメトリックス情報 グリフ(字形)の幅(高さ)の情報 本来はフォントが内蔵している情報だが,PDF内部に取り込んでいる。
 ⇒指定フォントがない場合(代替フォント)にレイアウトが崩れないよう配慮
  36. 36. グリフデータ • • PDFに劣らぬ厳しい現実が待ち受けている。 PostScriptフォント Adobeが開発したアウトラインフォントの規格(PostScriptで記述) バイナリ形式 ⇒CFF(Compact Font Format) CJK向けにCIDフォント形式を開発 ⇒Adobe-Japan1 TrueTypeフォント Apple, Microsoftが共同開発 ⇒Appleの独自拡張規格(ATT)も PCのOSに標準装備されて普及 OpenTypeフォント TrueTypeフォントとCFFフォントを統合した仕様 実態は,TrueTypeの器にCFFを丸ごと放り込んだ感じ
  37. 37. フォントサブセット PDFにフォントデータを埋め込むこと ができる。 日本語フォントはサイズが大きいので, サブセット化が必須 サブセット化するには,フォントデー タから,必要なグリフデータだけを抽 出して再編集する必要がある。
 ⇒実装は,かなりめんどくさい!
  38. 38. PDFを構成するその他の要素 グラフィックス
 PostScriptのモデルを引き継ぐ
 ⇒アフィン変換,ベジェ曲線,色(RGB, CMYK, …),シェーディング イメージ 非可逆形式画像(JPEG, JPEG2000はネイティブ対応) 可逆形式画像(PNG様の形式で画素データを格納) 対話機能 ナビゲーション 注釈,フォーム(JavaScript) 暗号,電子署名
  39. 39. 弊社製品のご紹介(PR)
  40. 40. PDFテンプレートエンジン Field Reports 2011年3月より販売しているPDF帳票開発ツール 【用途】中小規模の業務システム・Webサービスでの帳票出力
 ⇒マルチプラットフォーム/マルチ言語対応(特にLL言語) 【機能】PDFテンプレートにテキストや画像を動的に配置する 
 ⇒PDFテンプレート:オフィスソフト+Acrobatで作成
 ⇒動的に配置する値:JSONベースのパラメータ(DSL?)で記述 【仕組】共有ライブラリとして実装
 ⇒OCamlで開発
 ⇒PDFに特化することで,シンプルさと高性能を両立
  41. 41. Field Reportsの主な特長 (1) PDFテンプレート+パラメータ→PDF帳票 (2) 強力なグラフィックス表現 (3) 組版処理 ! • • • • • • 【開発目標】日本的な帳票をストレスなく開発できるようにしたい。 既存帳票・外部設計資料をテンプレートとして流用可能 規定の枠内にテキストを精密にはめ込む(ex.郵便番号,振込用紙) 見た目の美しさへのこだわり
  42. 42. (1) PDFテンプレート+パラメータ→PDF帳票 手順1:AcrobatでPDFにフィールドを配置
  43. 43. 手順2:プログラミング言語でパタメータを生成
  44. 44. 手順3:プログラムを実行 PDF生成時にフィールドはテンプレートのコンテンツと統合される。
  45. 45. (2) 強力なグラフィックス表現 PDFの多彩な表現力を活用 透過表現(画像,テキスト) アフィン変換(回転,拡大/縮小,変換行列) ブレンドモード
  46. 46. (3)組版処理 日本語の禁則処理・均等割付
  47. 47. 毛筆フォントを縦書き表示
  48. 48. 多漢字フォントへの対応 サロゲートペア 異体字セレクタ グリフ名またはGID/CIDによる直接指定
  49. 49. 内部構造 LL言語からは拡張ライブラリとして利用できる。 レンダリング機能本体は,関数型プログラミング言語OCamlで実装 言語Bridgeは,言語毎にCで実装(ソースは公開)
  50. 50. Field Reports 2.0の新機能 2013年末リリース予定(α版?) 組版機能を大幅に強化 リッチテキスト対応 縦組テキストの改善
  51. 51. リッチテキスト機能 PDFテンプレートに流し込む値をXML形式で指定する。
 利用可能な要素:body, p, span, div, br, ruby, img
  52. 52. スタイル指定(1) 要素のstyle属性として,
 フォント・フォントサイズ・色などの書式指定が可能
 例:style= font:KozGoMin; font-size:12; color:red
  53. 53. スタイル指定(2) font-stretch属性により「長体」の指定が可能
  54. 54. ruby要素
  55. 55. img要素
  56. 56. 実際の利用例 業務システムでの帳票出力 ➜納品書・請求書など 飲食店向けメニュー作成サービス ➜某飲料メーカーが提供する会員制サービス オンデマンド印刷(web to print)システム ➜Web上でデザインした名刺などのPDFを直接印刷所に送付
  57. 57. デモ http://labs.field-works.co.jp/atena/
 時間があれば…
  58. 58. まとめ PDFの現実と戦うために,PDFの基礎を学びましょう。 PDFは様々な要素技術の集合体であり,
 関心のある技術がいくつかあれば,きっと楽しいはず。 でも,時間を節約したい時は,Field Reportsの採用もご検討ください!
  59. 59. ご清聴ありがとうございました。

×