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.



Published on

Published in: Technology
  • D0WNL0AD FULL ▶ ▶ ▶ ▶ ◀ ◀ ◀ ◀
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this


  1. 1. PDF のはなし 其の二 How to Use CGPDF API.
  2. 2. How to use CGPDF• 何気にPDFのサポートはありがたい(Mac, iOS) Android, WP7は外部ライブラリが必要 (今日現在)• APIはCで実装
  3. 3. Opening, Getting Information of the PDF• CGPDFDocument (URL or DataProvider)• CGPDFPage サイズ(Bounding Box, Clipping Box), 回転, ページ数, メタデータ, バージョン, パス ワードロック• CFType (を継承)
  4. 4. Sample Code• Apple Developer: ZoomingPDFViewer key: 拡大縮小, 非同期描画, TiledLayer
  5. 5. Memory Management• Parent-Children モデル• CGPDFDocument-CGPDFPage• Pageよりも先にDocumentを解放してしまわ ないように注意!! Retain/strong Document Page Assign/weak
  6. 6. Drawing• CGContextDrawPDFPage パスの多いPDFや画像の大きいPDFは描画に 時間がかかる• 非同期描画がおすすめ e.g. CATiledLayer• c.f. 先ほどのZoomingPDFViewer
  7. 7. いよいよPDF内部へ• CGPDFScanner: ContentStream(≒ページ内) のPDFオペレータを解析• CGPDFDocumentGetCatalog: Documentの Catalog(≒ルートオブジェクト)を取得• CGPDFPageGetDictionary: ページを起点とす るPDFオブジェクトを取得✴ NOTE: Not CF Type
  8. 8. API PDFObject CGPDFObject - (汎用型)CGPDFDictionary Dictionary CGPDFArray Array CGPDFString String CGPDFStream Stream
  9. 9. Q. 目次を取得するには?• PDFのCatalogから目次データをパース
  10. 10. Q. Unicodeテキストに変換 するには1. テキスト関連のオペレータを抽出2. グリフ番号からUnicodeに変換3. 位置的構造を解析4. テキストに変換
  11. 11. Q. 書き出しする• CGPDFContext を使う• 別のライブラリを使う• 自分で実装する (解析よりも楽)