WinMerge をお使いの みなさま

PDF比較 は、どのようにやっていますか?
WinMerge を使用して、比較 していますか?

以前私は、WinMerge 用の xdocdiff プラグイン を使用していたんですが、
今は、Apache PDFBox を使用しています。

設定もそれほど難しくない ので、ご紹介します。


そもそも、なんで、xdocdiffを使用しないのか?
  • WinMerge の32bit版では、xdocdiff WinMerge Plugin を使用する必要があり、
    WinMerge の64bit版では、xdocdiffPlugin64 を使用する必要がありますが、
    Apache PDFBox は、Java Libraryであるため、環境に依存しない からです。

  • あと、現在でもメンテナンスされており
    セキュリティなどの観点としても、安心できると思ったからです。
    xdocdiff WinMerge Plugin の最終更新は、2012-12-27
    xdocdiffPlugin64 の最終更新日は、2014-10-09
    Apache PDFBox の最終更新日は、2025-01-23 (2025/01/28 現在)

  • xdocdiffは、下記のファイルに対応していて 非常に優秀 ではあるが、
    Word / Excel / PowerPoint は、WinMergeで 標準対応 しているので、
    私個人としては、あと PDF だけ対応できれば良かったからです。
    リッチテキスト
    Microsoft WORD 2007(OOXML)
    Microsoft Excel 2007(OOXML)
    Microsoft PowerPoint 2007(OOXML)
    Microsoft WORD ver5.0/95/97/2000/XP/2003
    Microsoft Excel ver5.0/95/97/2000/XP/2003
    Microsoft PowerPoint 97/2000/XP/2003
    OpenOffice.org
    Open Document
    一太郎 ver5/6/7/8/9/10/11/12
    OASYS/Win
    新松/松5/松6
    Lotus 123
    Windows3.1 Write
    Adobe PDF
    Webアーカイブ
    OutlookExpressのエクスポート形式


設定方法
それでは、本題です。
  1. 最小要件として、Java 8となっておりますので、
    Java 8以上のランタイムをインストールしておいてください。
    ここでは説明を控えさせていただきます。

  2. PFDBoxのダウンロードサイト から、"PFDBox standalone" 版をダウンロードします。
    下図では、"pdfbox-app-3.0.4.jar" になります。
    PDFBox

  3. ダウンロードしたファイルを配置する場所を決めて、配置してください。
    仮に、"C:\PDFBox" に "pdfbox-app-3.0.4.jar" を配置するものとします。

  4. WinMergeを起動し、[プラグイン] - [プラグインの設定...] を選択します。
    WinMerge-1

  5. [プラグイン] ダイアログが表示されますので、
    左下にある [追加] ボタンをクリックします。

    使用しないものは、チェックを外していますので、
    下図は、みなさまと同じ状態ではないので、ご了承願います。
    WinMerge-2

  6. [プラグインの編集] ダイアログが表示されますので、
    各項目を入力して [OK] ボタンをクリックします。
    WinMerge-3

    プラグインの種類 "ファイル展開プラグイン" を選択します
    プラグイン名
    ComparePDF
    拡張子一覧
    \.pdf$
    説明
    PDF ファイルの内容を表示します。
    デフォルト引数
    カテゴリー
    Content Extraction
    メニューキャプション
    PDF
    ウインドウ種別
    展開後のファイルの拡張子
    自動展開/自動比較前処理をこのプラグインで有効にする チェック を入れる
    引数を要求する
    エディタースクリプトを生成する
    UnpackFile
    コマンドライン
    cmd /c java -jar "C:\PDFBox\pdfbox-app-3.0.4.jar" export:text -alwaysNext --input="${SRC_FILE}" -ignoreBeads --output="${DST_FILE}"
    PackFile
    コマンドライン


  7. [プラグイン] ダイアログに戻ったら、一番左のチェックが入っているか確認し、
    [OK] ボタンをクリックします。
    WinMerge-4

    以上で、設定は終了です。


使用したコマンドライン オプション
オプション 説明
export:text PDF文書からテキストを抽出
-alwaysNext IOException にもかかわらず、次のページを処理する
--input="${SRC_FILE}" 入力PDFファイルを指定
-ignoreBeads ビーズによる分離を無効
設定しなくても良い
--output="${DST_FILE}" 出力ファイルを指定



有益な情報でしたら、幸いです。