Entry
プログラミングメモ - Adobe Reader は %%EOF マークを見ていない
2009年06月28日
適当な PDF ファイルをエディタで開いて,一番最後の方を見ると,%%EOF というマークがあるはずです。で,そのひとつ上に数字列,で,そのひとつ上に,startxref というキーワードがあります。
これ,PDF の仕様からすると,次のような処理を想定しているんですね。
- 最初にファイルを後ろから読んでいき,%%EOF キーワードを見つける(%%EOF は PDF ファイルの終わりから1024バイト以内にある)。
- 次に,%%EOF よりも前にある startxref キーワードを見つける。
- 最後に,その直後にある数値を読み取る。
最後の数値が何を表しているかというと,相互参照表という PDF ファイルフォーマットの中でも超重要なデータのある場所(ファイル先頭からのバイト数)を示しています。つまり,PDF ファイルを読む場合,まず,この %%EOF マークを探すことから始まるはずなんですね。
けど,ためしに適当な PDF ファイルの %%EOF マークを外して Adobe Reader 9 で開いたところ,普通に開けちゃいました。なんだ,見てないじゃん。
今時はパソコンのメモリもたくさん積めるようになったし,ファイルからちびちび読むよりは,いっぺんにメモリに読み込んで処理する方が効率がいいのかもしれません。それにしても,読んでないのか……なんだか仕様と違う動きが結構ありそうな感じ。
Trackback
Trackback URL:

