PDFlib

高度なPDFアプリケーションの開発を支援する定番プログラムライブラリー Supported by インフォテック株式会社

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)