Office関連

PDFファイルにヘッダーとフッターを追加するVBAマクロ

moug“マクロで既存のPDFファイルのフッターを操作(追加)したい”という質問がありました。

PDFファイルに差し込み印刷するVBAマクロ」でも書いているように、VBAマクロからPDFファイルを操作する場合は、OLEオートメーション機能でAcrobatを操作するのが簡単です(Adobe Readerは不可)。

Option Explicit

Public Sub Sample()
  Dim appAcro As Object
  Dim avdoc As Object
  Const PDSaveFull = &H1
  
  '------------------------------------------------------
  '[constants]
  'A wrapper object for holding various constant values.
  'Currently, this property returns an object with a
  'single property, align.
  '------------------------------------------------------
  'app.constants.align.left    : 0
  'app.constants.align.center  : 1
  'app.constants.align.right   : 2
  'app.constants.align.top     : 3
  'app.constants.align.bottom  : 4
  '------------------------------------------------------
  
  Set appAcro = CreateObject("AcroExch.App")
  Set avdoc = CreateObject("AcroExch.AVDoc")
  If avdoc.Open("C:\Test\MyFile.pdf", vbNullString) = True Then
    appAcro.Show
    With avdoc.GetPDDoc
      With .GetJSObject
        'ヘッダー追加
        .addWatermarkFromText cText:="ヘッダー", _
                              cFont:="Meiryo UI", _
                              nFontSize:=24, _
                              aColor:=.Color.blue, _
                              nHorizAlign:=.app.Constants.Align.Left, _
                              nVertAlign:=.app.Constants.Align.Top, _
                              nHorizValue:=36, _
                              nVertValue:=-36
        'フッター追加
        .addWatermarkFromText cText:="フッター", _
                              cFont:="Meiryo UI", _
                              nFontSize:=24, _
                              aColor:=.Color.red, _
                              nHorizAlign:=.app.Constants.Align.Right, _
                              nVertAlign:=.app.Constants.Align.Bottom, _
                              nHorizValue:=-36, _
                              nVertValue:=36
      End With
      .Save PDSaveFull, "C:\Test\MyFile2.pdf" 'PDFファイルを別名保存
    End With
    avdoc.Close 1 '文書を保存せずに閉じる
    appAcro.Hide: appAcro.Exit
  End If
  MsgBox "処理が終了しました。", vbInformation + vbSystemModal
End Sub

上記コードは、JSObject経由でDocオブジェクト(Acrobat)のaddWatermarkFromTextメソッドを呼び出してヘッダーとフッターを追加しています。

メソッドの説明については、下記ページに詳しく記載されているので、そちらをご参照ください。

  1. addWatermarkFromText
  2. 透かしを追加する (addWatermarkFromText)
  3. Adding Headers and Footers
  4. Watermarking a PDF with JavaScript

ただし、上記のようにプログラム経由でヘッダーやフッターを追加してしまうと、Acrobatでヘッダー・フッターの更新を行おうとしても、下図のように「このファイルにはヘッダーまたはフッターが見つかりません。ヘッダーまたはフッター情報が表示されていても、Acrobat で追加したものではないため、更新または削除することはできません。」といった警告が表示され、更新を行うことができません。

addWatermarkFromText_01

大量のファイルを一括処理するときは「ヘッダーやフッターを追加する方法 (Acrobat X)」にあるような、Acrobatの標準機能を使った方が良いだろうと思います。

[リボン・カスタマイズ]checkBox要素のチェック状態を動的に設定する。前のページ

「図のリセット」を実行するExcelマクロ次のページ

関連記事

  1. Office関連

    Office製品の開発チームにユーザーの声を届けよう!

    Office 用アプリやSharePoint 用アプリを開発する際「こ…

  2. Office関連

    Office製品のヘルプをHTML形式で閲覧する。

    「Word2013 VBA の日本語ヘルプ」で回答した通り、Offic…

  3. Office関連

    ConvertToTextメソッドを使ってテーブルを二次元配列に変換するWordマクロ

    WordのTableオブジェクトには、テーブルを解除して文字列に変換す…

  4. Office Scripts

    マクロの記録後に記録した操作をOffice スクリプトとしても保存できるようになりました。

    先日、Excelでマクロの記録操作を行ったところ、記録を終了した際に作…

  5. Office関連

    「クラシックスタイルメニュー for Office 2010」のOffice 2013対応状況

    私が下記ページで公開しているフリーソフト「クラシックスタイルメニュー …

コメント

  1. この記事へのコメントはありません。

  1. 2019年 6月 09日

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP