サイトマップ

▼ サイトの紹介

このサイトはExcel VBAから、Acrobat  アプリケーションをプログラミング操作するOLE機能について解説しています。

Adobe社はこのOLE機能の事を「IAC」と表現しています。

(注意:Adobe Readerだけでは使用出来ません)

Adobe社提供のSDK資料を元にサンプルを加えて説明をしています。

サイト管理人もご覧下さい。

▼ 当サイトの使い方

当サイトをうまく使う上での手順を以下に示します。

  1. 最初に「Acrobat SDK:OLE objects and methods図を入手する」にあるオブジェクト連携図を手に入れます。出来れば印刷する方が見やすいです。1頁です。
  2. 下記の「Excel」、「Acrobat」、「ダウンロード」、「SDK」、「備考」にサッと目を通します。「その他&メモ」は特に見なくてもイイです。
  3. 自分が目的とする処理を探しながら、印刷したオブジェクト連携図を元にサイト記「Object & List」下を上からクリックしてザックリと内容を見ます。各オブジェクトのメソッドの詳細は後にして全体で何が出来て、何が出来ない(サポートされていない)かを把握します。
    Acobat OLE 以外の選択」も見て下さい。
  4. 目的が解決出来ない時は、キッパリとあきらめてAdobe社の日本語「Acrobatフォーラムで相談します。当サイトより質が高い。
  5. それでもダメなら、当サイトにコメントを入れてみます。サイト管理人がある程度、判る範囲でお答えをします。
    (お願い:管理人を「様」での呼び方はご遠慮下さい。管理人さん、で十分です。)

▼ Excel

  1. Excel からAcrobatを操作する訳
  2. Excel から PDFファイル を作成&操作出来る
  3. Excel のオブジェクトブラウザ
  4. Excel からAcrobatを起動する
  5. Excel からPDFファイルを起動表示する
  6. Excel サンプル:PDFの文書プロパティを表示する
  7. 上記7のサンプルファイルの実行エラー
  8. Excel VBA 実行エラー時のメッセージ
  1. Excel でOLEの参照設定をする
  2. Excel でOLEの参照設定をする (AFormAut の追加)
  3. Excel でOLEの参照設定をする (Stream の追加)
  4. Excel でOLEの参照設定をする (MSXMLの追加)

▼ Acrobat

  1. Acrobat SDK:OLE objects and methods図を入手する
    ここで示す図は必ず入手する必要があります。
    これが無いとオブジェクト連携が判らなく、OLE(IAC)操作が出来ません。
  2. Acrobatアプリケーションを閉じる(実は簡単に出来ない)
  3. Acrobat OLEのエラーを防ぐVBAロジック
  4. Acrobat OLE 使用上の注意事項
  5. Acrobatプログラミングにおける技術上の制約やライセンス上の制約
  6. PDFファイルを作成、及び操作する開発者に対しての注意事項
  7. Windows のコマンドラインから Acrobat や Adobe Reader を使用して印刷する方法
  8. PDFドキュメントの文書フラグとは
  9. PDF バージョンとは
  10. PDFバージョンの変化
  11. ExportTask.xml
  12. 一括で複数ファイルを処理(アクション、バッチ処理)
  13. PDF の3つのパスワード
  14. PDFのパスワードは32文字まで
  15. 印刷の問題点を解決
  16. PDF内での座標の起点
  17. Acrobatとレジストリ
  18. PDF上のテキストとその座標

▼ ダウンロード

  1. 各種サンプルのダウンロード
  2. Adobe Acrobat 9.1 SDK のダウンロード
    SDKをダウンロードしてサンプル、解説PDF,HTML等を入手する必要があります。
    Adobe Acrobat X SDK のダウンロード情報も入ってます。
  3. Adobe Acrobat 8.1 SDK のダウンロード
    この 8.1 バージョンのSDKは現時点(2013/10/03)で一般公開されてません。
    情報が入り次第、掲載します。
  4. Acrobat製品別ダウンロード先 URL
  5. AcroPDFLib.AxAcroPDF:Excel VBAサンプル(A)
  6. AcroPDFLib.AxAcroPDF:Excel VBAサンプル(B)
  7. Adobe Readerの各種バージョンのダウンロード

▼ SDK

  1. AcrobatプログラミングにおけるMenu and Toolbar Button Names 一覧
  2. PDDocのGetJsObjectのオブジェクト構造図が見当たらない
  3. Acrobat SDK:正誤表
    Acrobat SDK v8.1ドキュメントに記載ミスが有ります。
  4. Acrobatに関するSDKが Acrobat Developer Center からダウンロード出来ます。
  5. Acrobat JavaScript における「Safe Path:セーフパス」についての注意事項
  6. Acrobat SDK公開Webサイト URLの取得方法

▼ 備考

  1. JavaScriptの解説はAcrobat v7 v8 共に英語版です。しかし、旧バージョンですがコメントを頂いた方から日本語版のAcrobat JavaScript解説PDFが見つかりました。以下がそのPDFです。
    http://www.adobe.com/jp/support/products/pdfs/acrojs_j.pdf
  2. [2009/1/7] AcroExch.AVDoc:Open メソッド でバグ?を発見しました。Acrobat v8.1.3 v9.0が対象です。

 

▼ その他&メモ

  1. OCR機能:読んde!ココと比較した結果
  2. アドビ(Adobe)製品に関するRSSの情報
  3. 添付ファイルの扱いには注意が必要
  4. AcrobatはPDF作成ソフトの標準では無くなる?
  5. Acrobat PDF は国際標準化された
  6. 手書きPDF入門」 リンク
  7. planet pdf (PDF関連の英語サイト) リンク
  8. デフォルトプリンタを一時的に変更する方法
  9. Delphi(デルファイ,デルフィ)言語からの使用方法
  10. Acrobat使用時のレジストリ変化を取得する方法
  11. オブジェクトは値では無く、参照情報を持つ
  12. Adobe Reader で PDF ファイルを表示 / 印刷する方法
  13. サンプル:RGB値の一覧(カラー番号)
  14. 「・・このバージョンの Acrobat ではサポートされていない新しい形式・・」警告メッセージへの対応

▼日本語の資料

日本語版で公開されている技術情報が非常に少なく、また対応バージョンも古く、作成年度も古いのが多いです。しかし、PDF 又はAcrobat のエンジニア向けの基本的な技術はこの10年間はそれ程進歩していません。よって思った以上に使える事に気がつくはずです。

公開されている情報は今後消滅すると予想されます。必要な情報はバックアップする事をお勧めします。

▼ Acrobat SDK 関連

  1. Acrobat JavaScript Object Specification バージョン 5.0.5
    テクニカルノート# 5186 改訂日:2001年9月14日
    (297頁) Acrobat 5.0 JavaScript リファレンスマニュアル。
    PDF ドキュメントでJavaScript を使用するために必要なすべての情報。
    ※2018/10 リンク先は消滅しました。
  2. Developing Acrobat Applications Using JavaScript
    Adobe Acrobat SDK バージョン 8.0

    (220頁) JavaScript を使用してAdobe Acrobat での開発や拡張したりする方法について
    説明したマニュアル。必読!
  3. JavaScript for Acrobat 3D Annotations API Reference
    Adobe Acrobat SDK 2007年4月バージョン 8.1

    (105頁) 3D 機能(3D注釈のJavaScript API)をユーザに提供したい開発者を対象にしたマニュアル
  4. Parameters for Opening PDF Files(日本語版)
    Adobe Acrobat SDK Version 8.1 April 2007

    (8頁) PDF ファイルをURL やコマンドの中で開く際に使用できるパラメータについて説明したマニュアル
  5. Adobe Acrobat Workshop
    (78頁) Acrobat 7.0 JavaScript、API、IAC等の開発環境に関する概念の説明図
  6. Adobe Acrobat 7.0 Acrobat JavaScript Scripting Guide 2005年1月7日
    (276頁) Acrobat JavaScript を使用して開発したり拡張したりする方法について簡単に説明ししたもの
  7. Programming Acrobat JavaScript Using Visual Basic
    Technical Note #5417 バージョン:Acrobat 6.0 2003年5月

    (14頁) Acrobat 6.0 提供のJSObject と言うOLE オートメーション機能のプログラミング環境に関しての概念を説明したもの
  8. Acrobat JavaScript Scripting Guide
    Technical Note #5430 バージョン:Acrobat 6.0 2003年5月

    (90頁) Acrobat 6 Pro に搭載されている JavaScript 開発環境を使用して Acrobat アプリケーションを開発したり拡張したりする方法を簡単にまとめたもの
  9. Upgrading Plug-ins From Acrobat 5 to Acrobat 6
    Technical Note #5424 バージョン:Acrobat 6.0 2003年7月

    (28頁) Acrobat 6 API の概要を説明し、Acrobat 5 およびそれ以前のプラグインを Acrobat 6 にアップグレードする際に開発者が理解しておくべきことについて説明したマニュアル
  10. Adobe® Solutions Network Developer Program FAQ for Members
    Version 3.0 MAY 2002

    (461頁) ASNディベロッパーサポートプログラム会員から頂いたAcrobat Plug-in API,IAC,Readerに関する質問を整理した情報
  11. Acrobat Developer FAQ
    Adobe Developer Relations 改定:1999年9月2日

    (37頁) 質問および回答形式を整理した情報
  12. Parameters for Opening PDF Files(日本語版)
    Adobe Acrobat SDK Version 8.1 April 2007

    (24頁) Acrobat SDK でよくある質問と回答を整理したもの
  13. Adobe Acrobat 7.0 Acrobat SDK ユーザガイド 2004年12月14日
    (124頁) Acrobat SDKで提供されている機能、Acrobatで提供されている機能とその操作説明等
  14. JavaScript for Acrobat API Reference
    Adobe Acrobat SDK バージョン 8.0

    (765頁) Acrobat JavaScript の詳細な解説書/リファレンス

▼ Acrobat 一般資料

  1. Adobe Acrobat Security ディベロッパーサポート 2005年4月7日
    (43頁) Acrobat 7.0 の各種セキュリティに関する概念

管理人の独り言

  • 2010/4/26 「Appメソッド一覧」移行完了。かなり見直したので、結構解説が難しくなってしまったかも・・。全部の移行が完了したら、再度見直す事にして、次に行きます。
  • 2010/5/14 データの移行と再リンクが終わりました(汗)。サイトマップの構成も少し見直して・・。後は見直し(リニューアル)する必要有り。OLE(IAC)の全貌が判った時点で細かい部分の追加が必要となった。各頁にかなりの追加と再テストが必要だが既に環境は出来あがっている。本当の踏ん張ると事はココからかもしれない。
  • 2010/5/18 Appオブジェクトの移行が完了しました。
  • 2012/11/12 AFormAut オブジェクトが IAC に含まれていない盲点に orz
  • 2013/10/14 JavaScriptAPIと言う当サイト独自の表現を JSObject と本来の表現に変更する。
  • 2015/5/9 サイトのレイアウトを変更。

▼ Acobat OLE 以外の選択

Adobe Acrobat OLE(IAC)以外で、PDFファイルをプログラミング操作する情報を以下に提供します。

VBA の Shell 関数(又はWscriptのExec関数)で起動する事により、IACには無い機能で複数ファイルの自動化処理が可能だと思われます。

  1. Qpdf
    PDF をコマンドラインで操作するツール
    セキュリティ(パスワード)の設定が出来る!
  2. Poppler
    PDF をコマンドラインで操作するツール
    Xpdf をペースした機能拡張版
    注意:公式サイトからはWin版EXEは配布されてません。
  3. pdf2htmlEX
    PDF をHTMLへ変換する高性能なツール
  4. Coherent PDF Command Line Tools
    非常に多機能なコマンドラインツール
    ライセンスに注意が必要
  5. Xpdf
    PDF をコマンドラインで操作するツール
    Popplerの旧バージョン。安定版。
  6. PDFtk *  ※検証予定(時期未定)
    PDF をコマンドラインで操作するツール  
  7. PDFill PDF Writer: PDF作成ツール
    コマンドラインの使用は有償版のみ。
    無償版と有償版。表示は英語。
  8. ★その他の各種ソフトとツール★
    各種のPDFソフトウェアを一覧でまとめたサイトです。
    たぶん、ココの情報が最新で内容も充実してると思われます。

[コメント入力] <-をクリックするとページの最後にコメント入力が出来ます。
名前(ニックネーム)は必須。メールアドレス(非表示)も必須ですが、適当で結構です。

【更新日:2019/06/05 (11版)】

Xpdf:コマンドラインのPDFツール

TOP > Xpdf ツール


Honey Chicken

概要

フリーのPDF用ユーティリティーです。コマンドウインドウのDOS画面上でコマンドラインとして使用できます。

この手のツールではPDFtk が有名ですが、あまり知られてないのでココで少し紹介します。

<2022/1/12追加>
新サイトが2022/1/7以降で接続できなくなっています。原因は不明です。なお、公式サイト以外からのダウンロードは推奨できません
どうしてもダウンロードしたい場合はコチラをご検討ください。削除されたサイトをキャッシュしている専用サイトです。

<2019/2/28追加>
更新が 長く停止したと思われた当ツールが、新サイトで復活しました。機能も追加されてバージョンが 4.01にアップ! 但し、当 pdf-file.nnn2.com サイトの記事は古いままです。日本語対応の部分などはそのまま使えますから、参考にしてください(確認済み)。時間が出来たら更新します。

詳細

  1. ライセンスはGPL(フリー)
  2. 機能別にEXEファイルが存在
  3. 32ビット版、64ビット版も有り
  4. Acrobatアプリ本体がなくても動作 (当たり前
  5. ドキュメントもサイトも英語 (汗
  6. コマンドラインのツールなのでVBAなどのプログラムから制御可能
  7. Windows版だけでなく、Linux、Mac 版など多数のOSに対応
  8. 最終バージョンは 2014年5月28日 とやや古いが、PDFファイルのPDFバージョンは上がってないので問題は無い、と思っている。

機能

EXE 単位での機能です。

  1. pdfdetach.exe :PDFにアタッチされた部分をファイルで抽出
  2. pdffonts.exe :PDFのフォント情報を表示
  3. pdfimages.exe :PDFから画像を抽出
  4. pdfinfo.exe :PDFの文書のプロパティ情報などを表示
  5. pdftohtml.exe :PDFをHTML形式に変換
  6. pdftopng.exe :PDFの各ページをPNG画像に変換
  7. pdftoppm.exe :PDFをPPM画像形式に変換
  8. pdftops.exe :PDFをPostScriptファイルに変換
  9. pdftotext.exe :PDFからテキストを抽出

「表示」と書いている部分はDOSの標準出力としてテキスト出力に切り替える事も出来ます。 
例:pdfinfo.exe  -meta  aa.pdf  >  bb.txt

 

 

ダウンロード

Xpdf ダウンロード サイトからダウンロードします。

xpdfbin-win-3.04.zip の部分をクリックします。

Xpdf : ダウンロード

インストール

ダウンロードしたファイルにはインストーラーは付いてません。適当な場所に解凍してそれで終了です。使いたいEXEファイルを目的のフォルダにコピーしても使えます。ランタイムや別途DLL等は必要ありません。

注意点としては途中のフォルダに半角の空白が入らないようにして下さい。プログラムから起動する時に不都合が出る場合があるからです。

今回は以下の様に解凍&インストールしました。

I:¥Tools¥Run¥Xpdf¥ のフォルダの下


+--bin32 ※32ビット版
|   +--pdfdetach.exe
|   +--pdffonts.exe
|   +--pdfimages.exe
|   +--pdfinfo.exe
|   +--pdftohtml.exe
|   +--pdftopng.exe
|   +--pdftoppm.exe
|   +--pdftops.exe
|   +--pdftotext.exe
+--bin64 ※64ビット版
|   +--pdfdetach.exe
|   +--pdffonts.exe
|   +--pdfimages.exe
|   +--pdfinfo.exe
|   +--pdftohtml.exe
|   +--pdftopng.exe
|   +--pdftoppm.exe
|   +--pdftops.exe
|   +--pdftotext.exe
+--doc ※ドキュメント類
|   +--pdfdetach.txt
|   +--pdffonts.txt
|   +--pdfimages.txt
|   +--pdfinfo.txt
|   +--pdftohtml.txt
|   +--pdftopng.txt
|   +--pdftoppm.txt
|   +--pdftops.txt
|   +--pdftotext.txt
|   +--sample-xpdfrc
|   +--xpdf.txt
|   +--xpdfrc.txt
+--ANNOUNCE
+--CHANGES
+--COPYING
+--COPYING3
+--INSTALL
+--README

日本語の言語ファイルのインストール

以下は pdfinfo.exe でPDFの情報を表示した時です。既に日本語の言語ファイルをインストールした後の場合です。Title(タイトル) や Subject(サブタイトル)が日本語表示になっています。

Xpdf:日本語の言語ファイルのインストール

日本語の言語ファイルがインストールされて無いと以下の様になります。英数字以外の日本語は非表示になってしまいます。

Xpdf:日本語の言語ファイルのインストール

以下に日本語の言語ファイルのインストール方法を説明します。

なお、結構面倒な作業なのでここの部分が必要無い環境、又は日本語文字は無くても構わない時はスキップしても結構です。また、後でゆっくりと時間が出来た時でも構いません。

ダウンロード

ココ から以下の xpdf-japanese.tar.gz ファイルをクリックしてダウンロードします。

Xpdf:日本語の言語ファイルのインストール

xpdf-japanese.tar.gz を適当なフォルダに解凍します。解凍すると以下の様なファイルが出てきます。

xpdf-japanese.tar.gz

+--xpdf-japanese
    +--CMap
    |   +--78-EUC-H
    |   +--78-EUC-V
    |   +--78-H
    |   +--78ms-RKSJ-H
    |   +--78ms-RKSJ-V
    |   +--78-RKSJ-H
    |   +--78-RKSJ-V
    |   +--78-V
    |   +--83pv-RKSJ-H
    |   +--90msp-RKSJ-H
    |   +--90msp-RKSJ-V
    |   +--90ms-RKSJ-H
    |   +--90ms-RKSJ-UCS2
    |   +--90ms-RKSJ-V
    |   +--90pv-RKSJ-H
    |   +--90pv-RKSJ-UCS2
    |   +--90pv-RKSJ-UCS2C
    |   +--90pv-RKSJ-V
    |   +--Add-H
    |   +--Add-RKSJ-H
    |   +--Add-RKSJ-V
    |   +--Add-V
    |   +--Adobe-Japan1-0
    |   +--Adobe-Japan1-1
    |   +--Adobe-Japan1-2
    |   +--Adobe-Japan1-3
    |   +--Adobe-Japan1-4
    |   +--Adobe-Japan1-5
    |   +--Adobe-Japan1-6
    |   +--Adobe-Japan1-UCS2
    |   +--EUC-H
    |   +--EUC-V
    |   +--Ext-H
    |   +--Ext-RKSJ-H
    |   +--Ext-RKSJ-V
    |   +--Ext-V
    |   +--H
    |   +--Hankaku
    |   +--Hiragana
    |   +--Katakana
    |   +--NWP-H
    |   +--NWP-V
    |   +--RKSJ-H
    |   +--RKSJ-V
    |   +--Roman
    |   +--UniJIS2004-UTF8-H
    |   +--UniJIS2004-UTF8-V
    |   +--UniJIS2004-UTF16-H
    |   +--UniJIS2004-UTF16-V
    |   +--UniJIS2004-UTF32-H
    |   +--UniJIS2004-UTF32-V
    |   +--UniJISPro-UCS2-HW-V
    |   +--UniJISPro-UCS2-V
    |   +--UniJISPro-UTF8-V
    |   +--UniJIS-UCS2-H
    |   +--UniJIS-UCS2-HW-H
    |   +--UniJIS-UCS2-HW-V
    |   +--UniJIS-UCS2-V
    |   +--UniJIS-UTF8-H
    |   +--UniJIS-UTF8-V
    |   +--UniJIS-UTF16-H
    |   +--UniJIS-UTF16-V
    |   +--UniJIS-UTF32-H
    |   +--UniJIS-UTF32-V
    |   +--UniJISX0213-UTF32-H
    |   +--UniJISX0213-UTF32-V
    |   +--UniJISX02132004-UTF32-H
    |   +--UniJISX02132004-UTF32-V
    |   +--V
    |   +--WP-Symbol
    +--add-to-xpdfrc
    +--Adobe-Japan1.cidToUnicode
    +--EUC-JP.unicodeMap
    +--ISO-2022-JP.unicodeMap
    +--README
    +--Shift-JIS.unicodeMap

インストール

今回は32ビット版EXEのみを対象にします。「sample-xpdfrc」と「add-to-xpdfrc」の2つのファイルを使って編集し、それを元に「I:¥Tools¥Run¥Xpdf¥bin32¥xpdfrc」ファイルを作成します。

① 言語ファイルのxpdf-japanese フォルダごとを I:¥Tools¥Run¥Xpdf¥bin32¥ フォルダにコピーします。

② 「I:¥Tools¥Run¥Xpdf¥bin32¥xpdf-japanese 」フォルダを「I:¥Tools¥Run¥Xpdf¥bin32¥japanese 」にリネームします。

③ 「I:¥Tools¥Run¥Xpdf¥doc¥sample-xpdfrc 」ファイルを「I:¥Tools¥Run¥Xpdf¥bin32¥ 」フォルダの下にコピーします。そしてファイル名を「sample-xpdfrc」から「xpdfrc」にリネームします。

④ その「xpdfrc」ファイルをメモ帳で開いて以下の箇所を変更します。頭の # を削除して、「UTF-8」を「Shift-JIS」に変更します。

変更前: #textEncoding        UTF-8

変更後: textEncoding        Shit-JIS

一旦、そのままでファイルを上書き保存します。

⑤ 「I:¥Tools¥Run¥Xpdf¥bin32¥japanese¥add-to-xpdfrc」ファイルをメモ帳で開きます。中のファイルのパス情報のサンプルが有ります。UNIXの形式です。今回はWindows 形式のjapanes フォルダに修正します。

変更前:「/usr/local/share/xpdf/japanese/」

#----- begin Japanese support package (2011-sep-02) cidToUnicode Adobe-Japan1 /usr/local/share/xpdf/japanese/Adobe-Japan1.cidToUnicode unicodeMap ISO-2022-JP /usr/local/share/xpdf/japanese/ISO-2022-JP.unicodeMap unicodeMap EUC-JP /usr/local/share/xpdf/japanese/EUC-JP.unicodeMap unicodeMap Shift-JIS /usr/local/share/xpdf/japanese/Shift-JIS.unicodeMap cMapDir Adobe-Japan1 /usr/local/share/xpdf/japanese/CMap toUnicodeDir /usr/local/share/xpdf/japanese/CMap #fontFileCC Adobe-Japan1 /usr/..../kochi-mincho.ttf #----- end Japanese support package

変更後:「I:¥Tools¥Run¥Xpdf¥bin32¥japanese¥」 ※ \ では無く ¥ に変更します。

#----- begin Japanese support package (2011-sep-02) cidToUnicode Adobe-Japan1 I:\Tools\Run\Xpdf\bin32\japanese\Adobe-Japan1.cidToUnicode unicodeMap ISO-2022-JP I:\Tools\Run\Xpdf\bin32\japanese\ISO-2022-JP.unicodeMap unicodeMap EUC-JP I:\Tools\Run\Xpdf\bin32\japanese\EUC-JP.unicodeMap unicodeMap Shift-JIS I:\Tools\Run\Xpdf\bin32\japanese\Shift-JIS.unicodeMap cMapDir Adobe-Japan1 I:\Tools\Run\Xpdf\bin32\japanese\CMap toUnicodeDir I:\Tools\Run\Xpdf\bin32\japanese\CMap #fontFileCC Adobe-Japan1 /usr/..../kochi-mincho.ttf #----- end Japanese support package

⑥ 上記の結果は元のファイルに保存はしません。全てを一旦クリップボードにコピーします。それを「I:¥Tools¥Run¥Xpdf¥bin32¥xpdfrc」ファイルをメモ帳で開いて、最後の部分に貼り付けます。

⑦ 以下が内容です。 ※ \ では無く ¥ に変更します。

#======================================================================== # # Sample xpdfrc file # # The Xpdf tools look for a config file in two places: # 1. ~/.xpdfrc # 2. in a system-wide directory, typically /usr/local/etc/xpdfrc # # This sample config file demonstrates some of the more common # configuration options. Everything here is commented out. You # should edit things (especially the file/directory paths, since # they'll likely be different on your system), and uncomment whichever # options you want to use. For complete details on config file syntax # and available options, please see the xpdfrc(5) man page. # # Also, the Xpdf language support packages each include a set of # options to be added to the xpdfrc file. # # http://www.foolabs.com/xpdf/ # #======================================================================== #----- display fonts # These map the Base-14 fonts to the Type 1 fonts that ship with # ghostscript. You'll almost certainly want to use something like # this, but you'll need to adjust this to point to wherever # ghostscript is installed on your system. (But if the fonts are # installed in a "standard" location, xpdf will find them # automatically.) #fontFile Times-Roman /usr/local/share/ghostscript/fonts/n021003l.pfb #fontFile Times-Italic /usr/local/share/ghostscript/fonts/n021023l.pfb #fontFile Times-Bold /usr/local/share/ghostscript/fonts/n021004l.pfb #fontFile Times-BoldItalic /usr/local/share/ghostscript/fonts/n021024l.pfb #fontFile Helvetica /usr/local/share/ghostscript/fonts/n019003l.pfb #fontFile Helvetica-Oblique /usr/local/share/ghostscript/fonts/n019023l.pfb #fontFile Helvetica-Bold /usr/local/share/ghostscript/fonts/n019004l.pfb #fontFile Helvetica-BoldOblique /usr/local/share/ghostscript/fonts/n019024l.pfb #fontFile Courier /usr/local/share/ghostscript/fonts/n022003l.pfb #fontFile Courier-Oblique /usr/local/share/ghostscript/fonts/n022023l.pfb #fontFile Courier-Bold /usr/local/share/ghostscript/fonts/n022004l.pfb #fontFile Courier-BoldOblique /usr/local/share/ghostscript/fonts/n022024l.pfb #fontFile Symbol /usr/local/share/ghostscript/fonts/s050000l.pfb #fontFile ZapfDingbats /usr/local/share/ghostscript/fonts/d050000l.pfb # If you need to display PDF files that refer to non-embedded fonts, # you should add one or more fontDir options to point to the # directories containing the font files. Xpdf will only look at .pfa, # .pfb, .ttf, and .ttc files in those directories (other files will # simply be ignored). #fontDir /usr/local/fonts/bakoma #----- PostScript output control # Set the default PostScript file or command. #psFile "|lpr -Pmyprinter" # Set the default PostScript paper size -- this can be letter, legal, # A4, or A3. You can also specify a paper size as width and height # (in points). #psPaperSize letter #----- text output control # Choose a text encoding for copy-and-paste and for pdftotext output. # The Latin1, ASCII7, and UTF-8 encodings are built into Xpdf. Other # encodings are available in the language support packages. textEncoding Shift-JIS # Choose the end-of-line convention for multi-line copy-and-past and # for pdftotext output. The available options are unix, mac, and dos. #textEOL unix #----- misc settings # Enable FreeType, and anti-aliased text. #enableFreeType yes #antialias yes # Set the command used to run a web browser when a URL hyperlink is # clicked. #launchCommand viewer-script #urlCommand "netscape -remote 'openURL(%s)'" #----- begin Japanese support package (2011-sep-02) cidToUnicode Adobe-Japan1 I:\Tools\Run\Xpdf\bin32\japanese\Adobe-Japan1.cidToUnicode unicodeMap ISO-2022-JP I:\Tools\Run\Xpdf\bin32\japanese\ISO-2022-JP.unicodeMap unicodeMap EUC-JP I:\Tools\Run\Xpdf\bin32\japanese\EUC-JP.unicodeMap unicodeMap Shift-JIS I:\Tools\Run\Xpdf\bin32\japanese\Shift-JIS.unicodeMap cMapDir Adobe-Japan1 I:\Tools\Run\Xpdf\bin32\japanese\CMap toUnicodeDir I:\Tools\Run\Xpdf\bin32\japanese\CMap #fontFileCC Adobe-Japan1 /usr/..../kochi-mincho.ttf #----- end Japanese support package

本当は1桁目に「#」が付いている行はコメント扱いなので無くてもイイんですが。

注意

但しメタデータの日本語文字の部分は文字化けを起こします。でも既にその前のTitle(タイトル) や Subject(サブタイトル)で日本語表示が有るので、ソチラを使えばイイと思います。

Xpdf:日本語の言語ファイルのインストール

使い方

いくつかの簡単に使い方を上げてみます。

① コマンドウインドウのDOS画面上でコマンドラインとして使用

  1. Dos画面の開き方(1)
    1. Winキー + R
    2. CMD でEnter   
  2. Dos画面の開き方(2)
    1. エクスプローラーで開きたいフォルダをマウスでクリック
    2. 更に Shif キー押しながら + マウスで右クリック
    3. ポップアップメニューから「コマンドウインドウをここで開く(w)」を選択
Xpdf : pdfinfo.exe をコマンドラインで実行

上記の状態からEXEを起動します。

② VBAからShell 関数で起動

以下はサンプルです。

例:test1.pdf のメタ情報をテキストファイル test1.txt に出力する。

001 Option Explicit 002 Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long 003 Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long 004 Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long 005 Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessID As Long) As Long 006 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 007 Const SYNCHRONIZE = 1048576 008 Const PROCESS_QUERY_INFORMATION = &H400 009 010 ' テスト用呼び出し 011 Sub Main_Test() 012 Dim strCmd As String 013 strCmd = "cmd /c " & "I:¥Tools¥Run¥Xpdf¥bin32¥pdfinfo.exe" & " -rawdates " & _ 014 "D:¥pdf¥test1.pdf" & " > " & "D:¥doc¥test1.txt" 015 Call RunCommandLine(strCmd) 016 End Sub 017 018 ' shell関数の終了を待つ 019 Sub RunCommandLine(ByVal strCmd As String) 020 Dim hProcess As Long 021 Dim lpdwExitCode As Long 022 Dim dwProcessID As Long 023 Dim retVal As Long 024 Dim lCnt As Long 025 lCnt = 0 026 dwProcessID = Shell(strCmd, vbHide) 027 hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, True, dwProcessID) 028 Do 029 DoEvents 030 retVal = GetExitCodeProcess(hProcess, lpdwExitCode) 031 lCnt = lCnt + 1 032 If lCnt > 250 Then 033 Debug.Print "Exit Do =" & lCnt 034 Exit Do 035 End If 036 Sleep 20 037 038 'shell関数で実行したアプリが終了するまでループ 039 Loop While lpdwExitCode <> 0 040 End Sub

サンプル

  1. Xpdf : PDFのセキュリティ情報を取得するVBA関数

技術メモ

今後必要になるかもしれない情報をメモして置きます。

  1. pdfinfo.exe でメタデータの読み込みについて
    パスワードが掛かっているPDFもXMLフォーマットは異なるが
    dc:format='application/pdf' の形でdc:formatの値も取得できる。   
  2. pdftotext.exe の使用例
    pdftotext  -enc  EUC-JP  test_1.pdf  test_1.txt
    pdftotext  -enc  Shift-JIS  test_1.pdf  test_1.txt

Xpdf の今後の公開配布について(予想

最終バージョンは 2014年5月28日 とやや古いです。今後のバージョンアップは望めないと思われます。理由としては Xpdf をベースにした機能アップバージョン(フォーク版)として Poppler が公開されています。Poppler は他のソフトでも利用され、今後もバージョンアップが期待されています。よって Xpdf はPoppler に移行したと見受けられるので、開発は終了と結論しました。

但し最終バージョンの 3.04 は現在(2016/6/19)でも公開されています。このバージョンに関する脆弱性の報告は見当たらないです(:正確には見つけられなかった)。3.01 では脆弱性が過去に報告されていますが現時点ではその3.01バージョンは公開されてません。

Poppler について

現時点(2016/6/19)での考えです。今でもバージョンアップが繰り返されています。しかし残念な事にソースは公開されていますが、各OS単位でのバイナリー版が公式サイトで公開されていません。EXEのWindows版も公式サイトで公開されてません。よって自分でソースをビルドするか、他の人がビルドした物を使うしか手がない状態です。

個人で Windows版のEXEを公開しているサイトは有ります。Windows 10 64ビット上で試用してみたところ、一部は正常に動作しますが、幾つかがメモリエラーを起こしてしまいました。仮に当PC環境だけの問題としても検証できない以上は使えません。

時期は未定ですが MinGW でのビルド・アタックを予定しています。

Xpdf と Poppler の違い

簡単に言えば、安定したWindows版EXEが有るのがXpdf 、無いのがPoppler と言うことになります。但し、時間がこれを逆にするのは間違いないです。現時点(2016/6/19)で。

それと1つのEXEが動くのにXpdf は800kB~1.7MBの単体で動くにも関わらず、Poppler は関連するDLLが18MBも一緒に動作します。つまりPoppler は10倍ものメモリを使って動作することになります。環境と処理件数にもよりますが、こちらでの計測で処理時間はPoppler が4倍近い時間が掛かっています。これも違いの1つです。

以上。

VBA(Excel)からAcrobat経由でPDFをプログラミング操作(OLE:IAC)する