VBAにてPDFプロパティ情報を取得するやり方メモ

VBAにてPDFのプロパティ情報を得るやり方を調べたのでメモしておきます。

PDFプロパティ情報の取得の仕方

PDFを扱う時はまずAcrobat PROがあるかどうかがポイントになります。あれば参照設定からオブジェクトとして呼び出せるので色々できます。

Excel:PDFの文書プロパティを表示するが詳しかったです。

Acrobat PROがない等の場合は、Xpdfなどフリーソフトを使うことになります。今回はこの方法のメモです。

Xpdfでpdfinfo.exeで取れる

xpdfの説明は省きますが、コマンドラインで、

pdfinfo -enc Shift-JIS a.pdf

みたいに叩けば、

Title: タイトル
Subject: サブタイトル
Keywords: キーワード

というようなプロパティ情報が得られます。実際にはPDFバージョンまで10項目以上ありました。

この取得結果改行区切りで配列として得られれば1行ずつ、つまりタイトルの次はサブタイトル・・最後はPDFバージョンっぽいですがそのように得られます。例えばセルに吐き出したり、そもそもタイトルだけ欲しいならタイトルだけを吐き出すみたいなことができます。

For Each filenm In filedata
    If InStr(1, filenm, "Title", vbTextCompare) > 0 Then
        Cells(j, 1).Value = filenm
        j = j + 1
    End If
Next

みたいな感じでやると、タイトルだけセルに出力できます。PDFプロパティのタイトルに設定されてないと空白となるのでそのあたりはまた判断すればいいかと思います。一例として。

xpdfでexe提供されているツールを使えば、つまりコマンドラインツールの戻り値を得られるので、これは色々と使えそうな気がします。

もっといえば、PDF→Xpdf→VBA→Excelということで、文字通りPDFのプロパティ情報をExcelに出力することもできるわけですね。

3つのPDFからそれぞれ取得。A3のものはタイトルが空だった。

連携って色々ありますが、紐付け方をしっておけばPDFとVBAならまずXpdfをあたってみるというあたりがつけられるので便利ですね。Acrobat PROがない人はもちろんPDF自体が適切に作られてないと無理なことも多いのでそのあたりも込みてチェックしてみると良さそうです。

タイトルとURLをコピーしました