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関連

    格子状にガイドを追加するPowerPointマクロ

    前回の記事で、PowerPoint 2013で追加されたGuide、G…

  2. Office関連

    選択範囲をOneNoteに送るVBAマクロ

    OneNote プリンタードライバー(プリンター)を使ってドキュメント…

  3. Office関連

    [Word VBA]引数の型がVariantになっているのはなぜ?

    インストラクターのネタ帳でお馴染みの伊藤さんが先日下記の記事をアップさ…

  4. Office アドイン

    PowerPoint用のOffice用アプリ

    当ブログでも散々紹介しているOffice用アプリ(apps for O…

  5. Office関連

    Excel 2013で駅すぱあとWebサービス APIの「経路探索」を使ってみました。

    「「駅すぱあとWebサービス API無償提供」を利用してみました。」で…

  6. Office関連

    漢字かな交じり文をひらがなにするマクロ

    Yahoo!のテキスト解析Web API(ルビ振り)を使用して、漢字か…

コメント

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

  1. 2019年 6月 09日

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP