狠狠撸

狠狠撸Share a Scribd company logo
PDF のはなし 其の二
  How to Use CGPDF API.
How to use CGPDF


? 何気にPDFのサポートはありがたい(Mac, iOS)
 Android, WP7は外部ライブラリが必要 (今日現在)

? APIはCで実装
Opening, Getting
 Information of the PDF
? CGPDFDocument (URL or DataProvider)
? CGPDFPage
  サイズ(Bounding Box, Clipping Box),
  回転, ページ数, メタデータ, バージョン, パス
  ワードロック

? CFType (を継承)
Sample Code


? Apple Developer: ZoomingPDFViewer
  key: 拡大縮小, 非同期描画, TiledLayer
Memory Management

? Parent-Children モデル
? CGPDFDocument-CGPDFPage
? Pageよりも先にDocumentを解放してしまわ
 ないように注意!!

               Retain/strong

    Document                   Page
               Assign/weak
Drawing

? CGContextDrawPDFPage
  パスの多いPDFや画像の大きいPDFは描画に
  時間がかかる

? 非同期描画がおすすめ
  e.g. CATiledLayer

? c.f. 先ほどのZoomingPDFViewer
いよいよPDF内部へ
? CGPDFScanner: ContentStream(≒ページ内)
  のPDFオペレータを解析

? CGPDFDocumentGetCatalog: Documentの
  Catalog(≒ルートオブジェクト)を取得

? CGPDFPageGetDictionary: ページを起点とす
  るPDFオブジェクトを取得

? NOTE: Not CF Type
API          PDFObject
 CGPDFObject      - (汎用型)

CGPDFDictionary   Dictionary

  CGPDFArray        Array

 CGPDFString        String

 CGPDFStream       Stream
Q. 目次を取得するには?


? PDFのCatalogから目次データをパース
Q. Unicodeテキストに変換
         するには

1. テキスト関連のオペレータを抽出

2. グリフ番号からUnicodeに変換

3. 位置的構造を解析

4. テキストに変換
Q. 書き出しする


? CGPDFContext を使う
? 別のライブラリを使う
? 自分で実装する (解析よりも楽)

More Related Content

笔顿贵のはなし2