pdfのはなし1

20
PDF のはなし Yusuke Ito, @novi_

Upload: yusuke-ito

Post on 24-May-2015

1.581 views

Category:

Documents


6 download

DESCRIPTION

#NSEGでの発表ネタ

TRANSCRIPT

Page 1: PDFのはなし1

PDFのはなしYusuke Ito, @novi_

Page 2: PDFのはなし1

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デザインハードウェア, 回路デザイン

Page 3: PDFのはなし1

PDF on Mac

• Keynote

• Photoshop

• TeX

• Scan Snap

• プリント画面

Page 4: PDFのはなし1

プリント画面

Page 5: PDFのはなし1

PDF on Web

• Google Docs

• Slideshare

• Research Paper (e.g. CiNii

• 電子書籍 (e.g. 達人出版

Page 6: PDFのはなし1

PDF:PortableDocumentFormat

What’s is PDF?

でない...っぽくない、画像

Page 7: PDFのはなし1

References

• Wikipedia 日本語, English...

• 公式の仕様書:

“PDF Reference and Adobe Extensions to the PDF Specification”

• ggrks a.k.a. Google検索

※公式の仕様書によっては間違いがあるので注意!!

Page 8: PDFのはなし1

完ぺきな理解に必要な予備知識

Postscript

幾何学

線形台数

Lab ColorHSB Color

フォント

CID Font

TrueType

Type1 Font

組版

OpenGL

文字コード

LZW圧縮

JPEG

パス曲線

CMYK Color

CMap

Unicode

暗号化

Page 9: PDFのはなし1

つまりは...

仕様が複雑すぎる。。。

( ꒪⌓꒪)

Page 10: PDFのはなし1

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, 注釈機能, セキュリティ強化

Page 11: PDFのはなし1

Summary

• テキストorバイナリなデータ• ドキュメントは辞書オブジェクト(連想配列)とその配列の集まり

• オブジェクトの階層構造 (Root→...)• ランダムアクセス用のインデックスがある

Page 12: PDFのはなし1

Dimensions &Graphics

• 1px = 1/72 dpi• 左下原点• オペレータ=レンダリングと設定の命令• グラフィックステートスタックを持つ(e.g. OpenGL)

Page 13: PDFのはなし1

Text

• ASCII以外は基本的にフォントの文字コードorグリフ番号依存

• 日本語ならフォントとそのグリフ番号• 文書構造を持たない→出現順は任意 (多くは見た目で上から出現する)

• 文書構造は文字の位置で判定→2段組みや縦組は独自アルゴリズムが必要

Page 14: PDFのはなし1

PDF をテキストエディタで書いてみる。

Page 15: PDFのはなし1

Available framework

• Mac: PDF Kit(Obj-C), CoreGraphics(C)

• iOS: CoreGraphics

• 共にパース・レンダリング・書き出しをサポート

Page 16: PDFのはなし1

in iOS...

• PDF Kit はナシ• CoreGraphics (API: CGPDF...)が使える• 解析/レンダリング/書き出し• テキスト選択等は自分で実装• CGPDF...を使ってオブジェクトの解析は可能

Page 17: PDFのはなし1

CGPDFの欠点

• フレームワークはMacのものをほぼそのまま移植 (たぶん)

• メモリを食う• ランダムアクセスせず(外部オブジェクト以外)• 一旦メモリに読み込んだキャッシュを解放しない

Page 18: PDFのはなし1

Security / DRM

• CGPDFにはパスワードによる復号化APIが提供されているが...

• JBしてパッチを作れば、パスワードは抜けるので注意

• そこまでやるひとはいるのか...

Page 19: PDFのはなし1

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

Page 20: PDFのはなし1

Conclusion

環境によって文字化けするフォントの埋め込みに起因

iOSはCMYK非対応

文書構造を持たない元のUnicode文字を持

たない

PDF:PortableDocumentFormat

でない...っぽくない、画像