SlideShare una empresa de Scribd logo
1 de 11
Descargar para leer sin conexión
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 を使う
• 別のライブラリを使う
• 自分で実装する (解析よりも楽)

Más contenido relacionado

Destacado

第1回アジャイルサムライ読書会 島根道場
第1回アジャイルサムライ読書会 島根道場第1回アジャイルサムライ読書会 島根道場
第1回アジャイルサムライ読書会 島根道場
Yosuke Ubata
 
小さな幸せの集め方ForDevLOVE
小さな幸せの集め方ForDevLOVE小さな幸せの集め方ForDevLOVE
小さな幸せの集め方ForDevLOVE
Yuji Tomiyama
 

Destacado (20)

20140925ついうっかりよさようなら
20140925ついうっかりよさようなら20140925ついうっかりよさようなら
20140925ついうっかりよさようなら
 
課題から紐解くアジャイル
課題から紐解くアジャイル課題から紐解くアジャイル
課題から紐解くアジャイル
 
Git道場を開催してきた
Git道場を開催してきたGit道場を開催してきた
Git道場を開催してきた
 
改善のためのちょっとしたコツ
改善のためのちょっとしたコツ改善のためのちょっとしたコツ
改善のためのちょっとしたコツ
 
20120512 アジャイルサムライ読書会第8回
20120512 アジャイルサムライ読書会第8回20120512 アジャイルサムライ読書会第8回
20120512 アジャイルサムライ読書会第8回
 
第1回アジャイルサムライ読書会 島根道場
第1回アジャイルサムライ読書会 島根道場第1回アジャイルサムライ読書会 島根道場
第1回アジャイルサムライ読書会 島根道場
 
プロポーズで学ぶ成功するプレゼンテーション
プロポーズで学ぶ成功するプレゼンテーションプロポーズで学ぶ成功するプレゼンテーション
プロポーズで学ぶ成功するプレゼンテーション
 
小さな幸せの集め方ForDevLOVE
小さな幸せの集め方ForDevLOVE小さな幸せの集め方ForDevLOVE
小さな幸せの集め方ForDevLOVE
 
20150716 pcスキルコース2 あなたのメール作成時間を半減させます
20150716 pcスキルコース2 あなたのメール作成時間を半減させます20150716 pcスキルコース2 あなたのメール作成時間を半減させます
20150716 pcスキルコース2 あなたのメール作成時間を半減させます
 
LT戦略 きっと何者にもなれない俺のための5分
LT戦略 きっと何者にもなれない俺のための5分LT戦略 きっと何者にもなれない俺のための5分
LT戦略 きっと何者にもなれない俺のための5分
 
20100521部内勉強会
20100521部内勉強会20100521部内勉強会
20100521部内勉強会
 
テスト駆動開発始めました!
テスト駆動開発始めました!テスト駆動開発始めました!
テスト駆動開発始めました!
 
「Railsでやろう」にまつわる話
「Railsでやろう」にまつわる話「Railsでやろう」にまつわる話
「Railsでやろう」にまつわる話
 
ひとくち勉強会②_メモを考える
ひとくち勉強会②_メモを考えるひとくち勉強会②_メモを考える
ひとくち勉強会②_メモを考える
 
社長の時間の使い方のメモ
社長の時間の使い方のメモ社長の時間の使い方のメモ
社長の時間の使い方のメモ
 
10年かけたたどり着いた一つの場所はアジャイル開発の扉だった
10年かけたたどり着いた一つの場所はアジャイル開発の扉だった10年かけたたどり着いた一つの場所はアジャイル開発の扉だった
10年かけたたどり着いた一つの場所はアジャイル開発の扉だった
 
20141125やる気のスイッチを押す方法
20141125やる気のスイッチを押す方法20141125やる気のスイッチを押す方法
20141125やる気のスイッチを押す方法
 
パタン・ランゲージからプロジェクト・ランゲージへ Part1
パタン・ランゲージからプロジェクト・ランゲージへ Part1パタン・ランゲージからプロジェクト・ランゲージへ Part1
パタン・ランゲージからプロジェクト・ランゲージへ Part1
 
20120515 アジャイルサムライ読書会 第4回
20120515 アジャイルサムライ読書会 第4回20120515 アジャイルサムライ読書会 第4回
20120515 アジャイルサムライ読書会 第4回
 
20130423 #devlove 職場を劇的にさせる四十八手 —「n次請けSIerでも出来ること」のその続き—
20130423 #devlove 職場を劇的にさせる四十八手 —「n次請けSIerでも出来ること」のその続き—20130423 #devlove 職場を劇的にさせる四十八手 —「n次請けSIerでも出来ること」のその続き—
20130423 #devlove 職場を劇的にさせる四十八手 —「n次請けSIerでも出来ること」のその続き—
 

Similar a PDFのはなし2

マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方
CData Software Japan
 
2012/5/19 Webのパフォーマンスを考える ~WordPressと付き合うために~ @ WB Osaka
2012/5/19 Webのパフォーマンスを考える ~WordPressと付き合うために~ @ WB Osaka2012/5/19 Webのパフォーマンスを考える ~WordPressと付き合うために~ @ WB Osaka
2012/5/19 Webのパフォーマンスを考える ~WordPressと付き合うために~ @ WB Osaka
tama200x Kobayashi
 

Similar a PDFのはなし2 (20)

Google Product
Google ProductGoogle Product
Google Product
 
Magnum IO GPUDirect Storage 最新情報
Magnum IO GPUDirect Storage 最新情報Magnum IO GPUDirect Storage 最新情報
Magnum IO GPUDirect Storage 最新情報
 
誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング
 
マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方
 
WordCamp Yokohama 2010 Komori
WordCamp Yokohama 2010 KomoriWordCamp Yokohama 2010 Komori
WordCamp Yokohama 2010 Komori
 
2012/5/19 Webのパフォーマンスを考える ~WordPressと付き合うために~ @ WB Osaka
2012/5/19 Webのパフォーマンスを考える ~WordPressと付き合うために~ @ WB Osaka2012/5/19 Webのパフォーマンスを考える ~WordPressと付き合うために~ @ WB Osaka
2012/5/19 Webのパフォーマンスを考える ~WordPressと付き合うために~ @ WB Osaka
 
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
 
Hadoopデータ基盤とMulti-CloudなML基盤への取り組みの紹介
Hadoopデータ基盤とMulti-CloudなML基盤への取り組みの紹介Hadoopデータ基盤とMulti-CloudなML基盤への取り組みの紹介
Hadoopデータ基盤とMulti-CloudなML基盤への取り組みの紹介
 
Qlik Gold ClientテクニカルDeep-Diveセッション
Qlik Gold ClientテクニカルDeep-DiveセッションQlik Gold ClientテクニカルDeep-Diveセッション
Qlik Gold ClientテクニカルDeep-Diveセッション
 
Halide, Darkroom - 並列化のためのソフトウェア・研究
Halide, Darkroom - 並列化のためのソフトウェア・研究Halide, Darkroom - 並列化のためのソフトウェア・研究
Halide, Darkroom - 並列化のためのソフトウェア・研究
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
マルチスクリーン対応と最近のアプリの傾向
マルチスクリーン対応と最近のアプリの傾向マルチスクリーン対応と最近のアプリの傾向
マルチスクリーン対応と最近のアプリの傾向
 
Google Cloud Platformでソーシャルゲームを1本出してみた!
Google Cloud Platformでソーシャルゲームを1本出してみた!Google Cloud Platformでソーシャルゲームを1本出してみた!
Google Cloud Platformでソーシャルゲームを1本出してみた!
 
Datadog Agent on CloudRunによるGCPトレービリティ向上
Datadog Agent on CloudRunによるGCPトレービリティ向上Datadog Agent on CloudRunによるGCPトレービリティ向上
Datadog Agent on CloudRunによるGCPトレービリティ向上
 
AndroidLint #DroidKaigi
AndroidLint #DroidKaigiAndroidLint #DroidKaigi
AndroidLint #DroidKaigi
 
20171109 Amazon EC2 GPUインスタンス最新動向 P3 instance
20171109 Amazon EC2 GPUインスタンス最新動向 P3 instance20171109 Amazon EC2 GPUインスタンス最新動向 P3 instance
20171109 Amazon EC2 GPUインスタンス最新動向 P3 instance
 
HPCフォーラム2015 A-2 グローバル設計環境に欠かせないHP ProLiantサーバー 久保田隆志
HPCフォーラム2015 A-2 グローバル設計環境に欠かせないHP ProLiantサーバー  久保田隆志HPCフォーラム2015 A-2 グローバル設計環境に欠かせないHP ProLiantサーバー  久保田隆志
HPCフォーラム2015 A-2 グローバル設計環境に欠かせないHP ProLiantサーバー 久保田隆志
 
Gmo media.inc 第9回西日本ossの普及を考える会
Gmo media.inc 第9回西日本ossの普及を考える会Gmo media.inc 第9回西日本ossの普及を考える会
Gmo media.inc 第9回西日本ossの普及を考える会
 
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
 

Último

Último (10)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 

PDFのはなし2