PDFlib

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

PDFInfo ― PDF の内部構造を分析

PDF の構造を分析し、標準出力に表示するツール PDFInfo を紹介しています。

PDFInfo とは

PDFInfo は、PDFlib 9 を利用したコマンドラインプログラムで、pdf_key.txt に列挙されたキーを基に PDF の構造を再起的に分析します。

PDFInfo で使用できるオプション

PDFInfo で使用できるオプションは以下の通りです。pdfinfo.exe を引数なしで実行した場合にも表示されます。

-t
PDFlib の関数呼び出しを記録したトレースファイルを出力します
-f=pdf_name
分析する PDF のパスを設定します
-p=pdf_password
PDF にパスワードがかかってる場合、パスワードを設定します。PDF のパスワードには、権限の設定を行うマスターパスワードと表示のために必要なユーザーパスワードがありますが、ここで設定するのはマスターパスワードです。
-k=key_file
PDFlib+PDI または PDFlib Personalization Server (PPS) のライセンスキーが記載されたテキストファイルへのパスを設定します。ファイルの書式については licenses.txt をご覧ください。-k と -l が同時に設定された場合、-l を優先します。
-l=license_key
PDFlib+PDI または PPS のライセンスキーを設定します。-k と -l が同時に設定された場合、 -l を優先します。

出力結果の見方

PDFInfo の出力はいくつかのセクションに分かれています。セクションの種類は以下の通りです。

File Infromation
ファイル名、ファイルサイズ、PDF バージョン等の文書に関する情報を表示します。
Encrypt information
パスワードの設定、および権限の設定に関する情報を表示します。
Font Information
フォントの名前、タイプ、埋め込みの有無等の、文書中に含まれるフォントに関する情報を表示します。
Bookmark Information
文書中のしおりに関する情報を表示します。
Other Root Information
その他、PDF 文書に関する情報を表示します。
Page Information
ページ番号とページサイズを表示した後、引数で受け取った pdf_key.txt の内容に従って PDF を解析します。

各行の左辺が pCOS パス、右辺がそのパスのデータ型と値になっています。右辺の値は下記の7種類のデータ型に分かれています。

  1. boolean: 真偽値を表します
  2. number: 小数値を表します
  3. name: 名前文字列を表します
  4. string: name 以外の文字列を表します
  5. array: 配列を表します。自動で展開するため、右辺で使用することはありません
  6. dictionary: ディクショナリを表します
  7. stream: ストリームを表します

PDFInfo v3.1.1 (Build by PDFlib 9.1.1)
 copyright (c) 2018 infoTek K.K. all rights reserved.
 DLL version 9.1.1
File information
 filename=<4:string>hello_world.pdf
 filesize=<2:number>22827 (0x592b)
 linearized=<1:boolean>false
 pdfversion=<2:number>17 (0x11)
 version=<4:string>9.0.0
 pdfa=<4:string>none
 pdfx=<4:string>none
 tagged=<1:boolean>false
 /Info=<6:dictionary>
 /Info/CreationDate=<4:string>D:20130409191034+09'00'
 /Info/Creator=<4:string>PDFGen v4.0.0 for PDFlib 9.0.0
 copyright (c) 1997-2013 infoTek K.K. all rights reserved.
 /Info/Producer=<4:string>PDFlib Personalization Server 9.0.0 (Win32) unlicensed
Encrypt information
 encrypt=<6:dictionary>
 encrypt/algorithm=<2:number>0 (0x0)
 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
 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>
 ... 以下の階層にオブジェクトが見つかりません
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]/embedded=<1:boolean>true
 fonts[0]/fullname=<3:name>LVKIZN+IPAexGothic
 fonts[0]/italicangle=<2:number>0 (0x0)
 fonts[0]/name=<3:name>IPAexGothic
 fonts[0]/vertical=<1:boolean>false
 fonts[1]=<6:dictionary>
 fonts[1]/Type=<3:name>Font
 fonts[1]/type=<4:string>Type 3
 fonts[1]/Subtype=<3:name>Type3
 fonts[1]/embedded=<1:boolean>true
 fonts[1]/fullname=<3:name>www.pdflib.com
 fonts[1]/italicangle=<2:number>0 (0x0)
 fonts[1]/name=<3:name>www.pdflib.com
 fonts[1]/Name=<3:name>www.pdflib.com
 fonts[1]/Resources=<6:dictionary>
 ... 以下の階層にオブジェクトが見つかりません
 fonts[1]/vertical=<1:boolean>false
Bookmark information
Other Root 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.80, 843.25
 pages[0]=<6:dictionary>
 pages[0]/Type=<3:name>Page
 pages[0]/Contents=<7:stream(205)>...
 pages[0]/Contents/Filter=<3:name>FlateDecode
 pages[0]/Contents/Length=<2:number>162 (0xa2)
 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]/embedded=<1:boolean>true
 pages[0]/fontsize[0]/fullname=<3:name>LVKIZN+IPAexGothic
 pages[0]/fontsize[0]/italicangle=<2:number>0 (0x0)
 pages[0]/fontsize[0]/name=<3:name>IPAexGothic
 pages[0]/fontsize[0]/vertical=<1:boolean>false
 pages[0]/fontsize[1]=<6:dictionary>
 pages[0]/fontsize[1]/Type=<3:name>Font
 pages[0]/fontsize[1]/type=<4:string>Type 3
 pages[0]/fontsize[1]/Subtype=<3:name>Type3
 pages[0]/fontsize[1]/embedded=<1:boolean>true
 pages[0]/fontsize[1]/fullname=<3:name>www.pdflib.com
 pages[0]/fontsize[1]/italicangle=<2:number>0 (0x0)
 pages[0]/fontsize[1]/name=<3:name>www.pdflib.com
 pages[0]/fontsize[1]/Name=<3:name>www.pdflib.com
 pages[0]/fontsize[1]/Resources=<6:dictionary>
 ... 以下の階層にオブジェクトが見つかりません
 pages[0]/fontsize[1]/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]/embedded=<1:boolean>true
 pages[0]/fontstyle[0]/fullname=<3:name>LVKIZN+IPAexGothic
 pages[0]/fontstyle[0]/italicangle=<2:number>0 (0x0)
 pages[0]/fontstyle[0]/name=<3:name>IPAexGothic
 pages[0]/fontstyle[0]/vertical=<1:boolean>false
 pages[0]/fontstyle[1]=<6:dictionary>
 pages[0]/fontstyle[1]/Type=<3:name>Font
 pages[0]/fontstyle[1]/type=<4:string>Type 3
 pages[0]/fontstyle[1]/Subtype=<3:name>Type3
 pages[0]/fontstyle[1]/embedded=<1:boolean>true
 pages[0]/fontstyle[1]/fullname=<3:name>www.pdflib.com
 pages[0]/fontstyle[1]/italicangle=<2:number>0 (0x0)
 pages[0]/fontstyle[1]/name=<3:name>www.pdflib.com
 pages[0]/fontstyle[1]/Name=<3:name>www.pdflib.com
 pages[0]/fontstyle[1]/Resources=<6:dictionary>
 ... 以下の階層にオブジェクトが見つかりません
 pages[0]/fontstyle[1]/vertical=<1:boolean>false
 pages[0]/height=<2:number>843.25
 pages[0]/MediaBox[0]=<2:number>0 (0x0)
 pages[0]/MediaBox[1]=<2:number>0 (0x0)
 pages[0]/MediaBox[2]=<2:number>595.80
 pages[0]/MediaBox[3]=<2:number>843.25
 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]/Resources/Font[1]=<6:dictionary>
 pages[0]/Resources/Font[1]/Type=<3:name>Font
 pages[0]/Resources/Font[1]/Subtype=<3:name>Type3
 pages[0]/Resources/Font[1]/Name=<3:name>www.pdflib.com
 pages[0]/Resources/Font[1]/Resources=<6:dictionary>
 ... 以下の階層にオブジェクトが見つかりません
 pages[0]/Rotate=<2:number>0 (0x0)
 pages[0]/width=<2:number>595.80

PDFInfo の使用例

PDFlib+PDI や TET から pCOS パスを使って PDF の情報を取得したい場合、PDFInfo の出力情報が役に立ちます。その他、PDF 内部構造の学習にもお使いいただけます。

PDFInfo の動作環境

PDFInfo は Windows 上で動作する 32bit アプリケーションです。

PDFInfo の入手方法

PDFInfo は こちらからダウンロードいただけます。(zip)

(Jan 30, 2018 - )