pdfのはなし1
DESCRIPTION
#NSEGでの発表ネタTRANSCRIPT
PDFのはなしYusuke Ito, @novi_
About Me
• NNCT EI(電子情報) 2010卒業
• None (Apr 2010 to Sep 2010)→Lindoc, Inc. (Oct 2010 to Dec 2010) →Musavy, Inc. (Jan 2011 to present)
• 日本語, English, C, Objective-C
HTML, CSS, JS, Ruby, Go ←New
• UIデザイン, App/Webデザインハードウェア, 回路デザイン
PDF on Mac
• Keynote
• Photoshop
• TeX
• Scan Snap
• プリント画面
プリント画面
PDF on Web
• Google Docs
• Slideshare
• Research Paper (e.g. CiNii
• 電子書籍 (e.g. 達人出版
PDF:PortableDocumentFormat
What’s is PDF?
でない...っぽくない、画像
References
• Wikipedia 日本語, English...
• 公式の仕様書:
“PDF Reference and Adobe Extensions to the PDF Specification”
• ggrks a.k.a. Google検索
※公式の仕様書によっては間違いがあるので注意!!
完ぺきな理解に必要な予備知識
Postscript
幾何学
線形台数
Lab ColorHSB Color
フォント
CID Font
TrueType
Type1 Font
組版
OpenGL
文字コード
LZW圧縮
JPEG
パス曲線
CMYK Color
CMap
Unicode
暗号化
つまりは...
仕様が複雑すぎる。。。
( ꒪⌓꒪)
Versions
• 1.4(2001): Acrobat 5.0 - OpenTypeフォント対応, 透明効果, タグ付きPDF
• 1.5(2003) Acrobat 6.0 - JPEG 2000, 16bit画像,
マルチメディアコンテンツ
• 1.6(2004) Acrobat 7.0 - 3D対応
• 1.7(2006) Acrobat 8.0 - 3D, 注釈機能, セキュリティ強化
Summary
• テキストorバイナリなデータ• ドキュメントは辞書オブジェクト(連想配列)とその配列の集まり
• オブジェクトの階層構造 (Root→...)• ランダムアクセス用のインデックスがある
Dimensions &Graphics
• 1px = 1/72 dpi• 左下原点• オペレータ=レンダリングと設定の命令• グラフィックステートスタックを持つ(e.g. OpenGL)
Text
• ASCII以外は基本的にフォントの文字コードorグリフ番号依存
• 日本語ならフォントとそのグリフ番号• 文書構造を持たない→出現順は任意 (多くは見た目で上から出現する)
• 文書構造は文字の位置で判定→2段組みや縦組は独自アルゴリズムが必要
PDF をテキストエディタで書いてみる。
Available framework
• Mac: PDF Kit(Obj-C), CoreGraphics(C)
• iOS: CoreGraphics
• 共にパース・レンダリング・書き出しをサポート
in iOS...
• PDF Kit はナシ• CoreGraphics (API: CGPDF...)が使える• 解析/レンダリング/書き出し• テキスト選択等は自分で実装• CGPDF...を使ってオブジェクトの解析は可能
CGPDFの欠点
• フレームワークはMacのものをほぼそのまま移植 (たぶん)
• メモリを食う• ランダムアクセスせず(外部オブジェクト以外)• 一旦メモリに読み込んだキャッシュを解放しない
Security / DRM
• CGPDFにはパスワードによる復号化APIが提供されているが...
• JBしてパッチを作れば、パスワードは抜けるので注意
• そこまでやるひとはいるのか...
Quartz and PDF
• Macにおいて、Quartzの内部にはPDFの技術が使われている
• NSView=PDF : 出力先に依存しない• Cocoaが左下原点なのはPDFを使っているからという説も
Ars Technica: http://arstechnica.com/reviews/1q00/macos-x-gui/macos-x-gui-4.html
Conclusion
環境によって文字化けするフォントの埋め込みに起因
iOSはCMYK非対応
文書構造を持たない元のUnicode文字を持
たない
PDF:PortableDocumentFormat
でない...っぽくない、画像