SlideShare a Scribd company logo
1 of 34
Hello, World! PDF 版 2007-9-8
発端
どう書く ?.org http://ja.doukaku.org/
え?
PDF で書くんじゃないの?
%PDF-1.4 1 0 obj << /Type /Page /Parent 5 0 R /Resources 3 0 R /Contents 2 0 R >> endobj 2 0 obj << /Length 53 >> stream BT /F1 90 Tf 1 0 0 1 10 600 Tm (Hello, World!) Tj ET endstream endobj 3 0 obj << /ProcSet [ /PDF /Text ] /Font << /F1 4 0 R >> >> endobj 自分で書いてみた
4 0 obj << /Type /Font /Subtype /Type1 /Name /Helv /BaseFont /Helvetica >> endobj 5 0 obj << /Type /Pages /Kids [ 1 0 R ] /Count 1 /MediaBox [ 0 0 595 842 ] >> endobj 6 0 obj << /Type /Catalog /Pages 5 0 R >> endobj trailer << /Root 6 0 R >> %%EOF
実は、日本語で解説してくれている好き者(ホメ言葉)がいた http://hanaden.hp.infoseek.co.jp/ii/pdfxhand.html
以下、まるきり受け売り
PDFの構造 Catalog Pages Page : コンテンツストリーム : リソース フォント %PDF-1.4 %%EOF trailer
本当はこういうのも入れるのだけど省略 ,[object Object],[object Object]
それぞれのアイテムは「オブジェクト」という単位にまとめられている 1 0 obj    : endobj (オブジェクト指向のオブジェクトとは直接関係ないと思う) 登場順は好きにしていいらしい 通し番号 世代番号(とりあえず 0 ) 定義
コンテンツストリーム Catalog Pages Page : コンテンツストリーム : リソース フォント %PDF-1.4 %%EOF trailer
= 描画命令のオブジェクト 2 0 obj << /Length 53 >> stream BT /F1 90 Tf 1 0 0 1 10 600 Tm (Hello, World!) Tj ET endstream endobj 辞書(パラメータ) ここでは stream のバイト数 stream (実際の描画命令)
streamの中身 stream BT /F1 90 Tf 1 0 0 1 10 600 Tm (Hello, World!) Tj ET endstream PostScript みたいな感じ 開始 フォントを選ぶ 座標を移動 文字を描画 終了
ほかにもいろいろ命令 ,[object Object],[object Object],[object Object]
フォント Catalog Pages Page : コンテンツストリーム : リソース フォント %PDF-1.4 %%EOF trailer
= 1つのフォントを定義 4 0 obj << /Type /Font /Subtype /Type1 /Name /Helv /BaseFont /Helvetica >> endobj オブジェクトの種類(ここでは Font ) Type1 フォント (欧文用のフォント形式) 名前 本当のフォント名
フォントの情報をいろいろ入れられるが、 最小ではこんなところ
リソース Catalog Pages Page : コンテンツストリーム : リソース フォント %PDF-1.4 %%EOF trailer
= 道具箱 3 0 obj << /ProcSet [ /PDF /Text ] /Font << /F1 4 0 R >> >> endobj 使う描画命令セット Font オブジェクトを指す
Page Catalog Pages Page : コンテンツストリーム : リソース フォント %PDF-1.4 %%EOF trailer
= つまりページ 1 0 obj << /Type /Page /Parent 5 0 R /Resources 3 0 R /Contents 2 0 R >> endobj オブジェクトの種類 親要素( Pages オブジェクト)を指す リソースを指す コンテンツストリームを指す
Pages Catalog Pages Page : コンテンツストリーム : リソース フォント %PDF-1.4 %%EOF trailer
= つまりページ一覧 5 0 obj << /Type /Pages /Kids [ 1 0 R ] /Count 1 /MediaBox [ 0 0 595 842 ] >> endobj オブジェクトの種類 子要素( Page オブジェクト)のリスト 子要素の個数、つまりページ数 ページのサイズ(単位:ポイント) この場合は A4 横
Catalog Catalog Pages Page : コンテンツストリーム : リソース フォント %PDF-1.4 %%EOF trailer
= ルート要素 6 0 obj << /Type /Catalog /Pages 5 0 R >> endobj オブジェクトの種類 Pages オブジェクト
trailer Catalog Pages Page : コンテンツストリーム : リソース フォント %PDF-1.4 %%EOF trailer
= すべての大元 trailer << /Root 6 0 R >> ルート要素( Catalog )を指す
[object Object],[object Object]
DEMO
まとめ ,[object Object],[object Object],[object Object]
まとめ ,[object Object],[object Object]
any questions? ご静聴ありがとうございました

More Related Content

Similar to Hello, World! in PDF

PHP, Now and Then 2011
PHP, Now and Then 2011PHP, Now and Then 2011
PHP, Now and Then 2011Rui Hirokawa
 
2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talkmitamex4u
 
CLR/H 第56回勉強会 LT「Ruby向けmultisetライブラリのご紹介」
CLR/H 第56回勉強会 LT「Ruby向けmultisetライブラリのご紹介」CLR/H 第56回勉強会 LT「Ruby向けmultisetライブラリのご紹介」
CLR/H 第56回勉強会 LT「Ruby向けmultisetライブラリのご紹介」Hiro H.
 
JavaScript&Firebug入門
JavaScript&Firebug入門JavaScript&Firebug入門
JavaScript&Firebug入門柴田 篤志
 
Let’s translate FuelPHP docs! [RELOADED]
Let’s translate FuelPHP docs! [RELOADED]Let’s translate FuelPHP docs! [RELOADED]
Let’s translate FuelPHP docs! [RELOADED]Sho A
 
高橋rf.html 0.3
高橋rf.html 0.3高橋rf.html 0.3
高橋rf.html 0.3hATrayflood
 

Similar to Hello, World! in PDF (7)

PHP, Now and Then 2011
PHP, Now and Then 2011PHP, Now and Then 2011
PHP, Now and Then 2011
 
2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk2008.10.18 L4u Tech Talk
2008.10.18 L4u Tech Talk
 
CLR/H 第56回勉強会 LT「Ruby向けmultisetライブラリのご紹介」
CLR/H 第56回勉強会 LT「Ruby向けmultisetライブラリのご紹介」CLR/H 第56回勉強会 LT「Ruby向けmultisetライブラリのご紹介」
CLR/H 第56回勉強会 LT「Ruby向けmultisetライブラリのご紹介」
 
最速HTML勉強会
最速HTML勉強会最速HTML勉強会
最速HTML勉強会
 
JavaScript&Firebug入門
JavaScript&Firebug入門JavaScript&Firebug入門
JavaScript&Firebug入門
 
Let’s translate FuelPHP docs! [RELOADED]
Let’s translate FuelPHP docs! [RELOADED]Let’s translate FuelPHP docs! [RELOADED]
Let’s translate FuelPHP docs! [RELOADED]
 
高橋rf.html 0.3
高橋rf.html 0.3高橋rf.html 0.3
高橋rf.html 0.3
 

Recently uploaded

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: 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 Gamesatsushi061452
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
論文紹介: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 UnderstandingToru Tamaki
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: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...Toru Tamaki
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 

Recently uploaded (10)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介: 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
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: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の勉強会で発表されたものです。
 
論文紹介: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...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 

Hello, World! in PDF