PDFInfo ― PDF の内部構造を分析
PDF の構造を分析し、標準出力に表示するツール PDFInfo を紹介しています。
PDFInfo とは
PDFInfo は、PDFlib 9 を利用したコマンドラインプログラムで、pdf_key.txt に列挙されたキーを基に PDF の構造を再起的に分析します。
PDFInfo で使用できるオプション
PDFInfo で使用できるオプションは以下の通りです。pdfinfo.exe を引数なしで実行した場合にも表示されます。
- -t
- PDFlib の関数呼び出しを記録したトレースファイル pdfinfo.log を出力します
- -f=PDF_NAME
- 分析する PDF のパスを設定します。オプションなしの引数で渡すこともできます。
- -p=PASSWORD
- 分析する PDF にパスワードがかかってる場合に設定します。
- -k=KEY_FILE
- pdfinfo.exe と同じフォルダにある pdf_key.txt とは別のキーファイルを使用する場合に、そのパスを指定します。
- -l=LICENSE_KEY
- PDFlib+PDI または PDFlib Personalization Server (PPS) のライセンスキーを設定します。
出力結果の見方
PDFInfo の出力はいくつかのセクションに分かれています。セクションの種類は以下の通りです。
- File Infromation
- ファイル名、ファイルサイズ、PDF バージョン等の文書に関する情報を表示します。
- Encrypt information
- パスワードの設定、および権限の設定に関する情報を表示します。
- Font Information
- フォントの名前、タイプ、埋め込みの有無等の、文書中に含まれるフォントに関する情報を表示します。
- Bookmark Information
- 文書中のしおりに関する情報を表示します。
- Name Information
- 文書中の名前付き移動先に関する情報を表示します。
- Image Information
- 文書中の画像データに関する情報を表示します。
- Other Root Information
- その他の文書に関する情報を表示します。
- Page Information
- ページ番号とページサイズを表示した後、引数で受け取った pdf_key.txt の内容に従って PDF を解析します。
各行の左辺が pCOS パス、右辺がそのパスのデータ型と値になっています。右辺の値は下記の7種類のデータ型に分かれています。
- 1:boolean
- 真偽値を表します。
- 2:number
- 小数値を表します。
- 3:name
- 名前文字列を表します
- 4:string
- name 以外の文字列を表します
- 5:array
- 配列を表します。
※ 自動で展開するため、右辺で使用することはありません
- 6:dictionary
- 辞書を表します。
- 7:stream
- ストリームのうち、すべてのフィルターを除去したフィルターなしデータを表します。
- 8:fstream
- ストリームのうち、pCOS が対応していないフィルターを残したフィルター付きデータを表します。
PDFInfo v3.1.2 (Build by PDFlib 9.3.1)
copyright (c) 1997-2021 infoTek K.K. all rights reserved.
DLL version 9.3.1
File information
filename=<4:string>hello_world.pdf
filesize=<2:number>6057 (0x17a9)
linearized=<1:boolean>false
shrug=<1:boolean>false
pdfversion=<2:number>17 (0x11)
extensionlevel=<2:number>0 (0x0)
pdfversionstring=<4:string>1.7
version=<4:string>9.3.1
pcosinterface=<2:number>8 (0x8)
pcosmode=<2:number>2 (0x2)
pcosmodename=<4:string>full
pdfa=<4:string>none
pdfe=<4:string>none
pdfua=<4:string>none
pdfvt=<4:string>none
pdfx=<4:string>none
tagged=<1:boolean>false
/Info=<6:dictionary>
/Info/CreationDate=<4:string>D:20211129102816+09'00'
/Info/Producer=<4:string>PDFlib 9.3.1 (Win64)
Encrypt information
encrypt=<6:dictionary>
encrypt/algorithm=<2:number>0 (0x0)
encrypt/attachment=<1:boolean>false
encrypt/description=<4:string>No encryption
encrypt/length=<2:number>0 (0x0)
encrypt/master=<1:boolean>false
encrypt/noaccessible=<1:boolean>false
encrypt/noannots=<1:boolean>false
encrypt/noassemble=<1:boolean>false
encrypt/nocopy=<1:boolean>false
encrypt/noforms=<1:boolean>false
encrypt/nohiresprint=<1:boolean>false
encrypt/nomodify=<1:boolean>false
encrypt/noprint=<1:boolean>false
encrypt/plainmetadata=<1:boolean>true
encrypt/user=<1:boolean>false
Font information
fonts[0]=<6:dictionary>
fonts[0]/Type=<3:name>Font
fonts[0]/type=<4:string>TrueType (CID)
fonts[0]/Subtype=<3:name>Type0
fonts[0]/ascender=<2:number>880 (0x370)
fonts[0]/descender=<2:number>-120 (0xffffff88)
fonts[0]/embedded=<1:boolean>true
fonts[0]/fullname=<3:name>HGKTCJ+YuGothic-Regular
fonts[0]/italicangle=<2:number>0 (0x0)
fonts[0]/name=<3:name>YuGothic-Regular
fonts[0]/vertical=<1:boolean>false
Bookmark information
Names information
names=<6:dictionary>
names/AlternatePresentations=<6:dictionary>
names/AP=<6:dictionary>
names/Dests=<6:dictionary>
names/EmbeddedFiles=<6:dictionary>
names/IDS=<6:dictionary>
names/JavaScript=<6:dictionary>
names/Pages=<6:dictionary>
names/Renditions=<6:dictionary>
names/Templates=<6:dictionary>
names/URLS=<6:dictionary>
Image information
colorspaces[0]=<6:dictionary>
colorspaces[0]/name=<4:string>DeviceGray
Other Information
/Root=<6:dictionary>
/Root/Type=<3:name>Catalog
/Root/Pages=<6:dictionary>
/Root/Pages/Type=<3:name>Pages
/Root/Pages/Count=<2:number>1 (0x1)
Page information (1 pages)
1/1 595.00, 842.00
pages[0]=<6:dictionary>
pages[0]/Type=<3:name>Page
pages[0]/Contents=<7:stream(66)>...
pages[0]/Contents/Filter=<3:name>FlateDecode
pages[0]/Contents/Length=<2:number>69 (0x45)
pages[0]/fontsize[0]=<6:dictionary>
pages[0]/fontsize[0]/Type=<3:name>Font
pages[0]/fontsize[0]/type=<4:string>TrueType (CID)
pages[0]/fontsize[0]/Subtype=<3:name>Type0
pages[0]/fontsize[0]/ascender=<2:number>880 (0x370)
pages[0]/fontsize[0]/descender=<2:number>-120 (0xffffff88)
pages[0]/fontsize[0]/embedded=<1:boolean>true
pages[0]/fontsize[0]/fullname=<3:name>HGKTCJ+YuGothic-Regular
pages[0]/fontsize[0]/italicangle=<2:number>0 (0x0)
pages[0]/fontsize[0]/name=<3:name>YuGothic-Regular
pages[0]/fontsize[0]/vertical=<1:boolean>false
pages[0]/fontstyle[0]=<6:dictionary>
pages[0]/fontstyle[0]/Type=<3:name>Font
pages[0]/fontstyle[0]/type=<4:string>TrueType (CID)
pages[0]/fontstyle[0]/Subtype=<3:name>Type0
pages[0]/fontstyle[0]/ascender=<2:number>880 (0x370)
pages[0]/fontstyle[0]/descender=<2:number>-120 (0xffffff88)
pages[0]/fontstyle[0]/embedded=<1:boolean>true
pages[0]/fontstyle[0]/fullname=<3:name>HGKTCJ+YuGothic-Regular
pages[0]/fontstyle[0]/italicangle=<2:number>0 (0x0)
pages[0]/fontstyle[0]/name=<3:name>YuGothic-Regular
pages[0]/fontstyle[0]/vertical=<1:boolean>false
pages[0]/height=<2:number>842 (0x34a)
pages[0]/isempty=<1:boolean>false
pages[0]/label=<4:string>1
pages[0]/MediaBox[0]=<2:number>0 (0x0)
pages[0]/MediaBox[1]=<2:number>0 (0x0)
pages[0]/MediaBox[2]=<2:number>595 (0x253)
pages[0]/MediaBox[3]=<2:number>842 (0x34a)
pages[0]/Resources=<6:dictionary>
pages[0]/Resources/Font=<6:dictionary>
pages[0]/Resources/Font[0]=<6:dictionary>
pages[0]/Resources/Font[0]/Type=<3:name>Font
pages[0]/Resources/Font[0]/Subtype=<3:name>Type0
pages[0]/Rotate=<2:number>0 (0x0)
pages[0]/usespagetransparency=<2:number>0 (0x0)
pages[0]/usesanytransparency=<2:number>0 (0x0)
pages[0]/width=<2:number>595 (0x253)
PDFInfo の使用例
PDFlib+PDI や TET から pCOS パスを使って PDF の情報を取得したい場合、PDFInfo の出力情報が役に立ちます。その他、PDF 内部構造の学習にもお使いいただけます。
PDFInfo の動作環境
PDFInfo は Windows 上で動作する 32bit アプリケーションです。
PDFInfo の入手方法
PDFInfo は こちらからダウンロードいただけます。(zip)
(3.1.2、2021/11/29 更新)
(Jan 30, 2018 - Nov 29, 2021)