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メソッドを呼び出してヘッダーとフッターを追加しています。
メソッドの説明については、下記ページに詳しく記載されているので、そちらをご参照ください。
- addWatermarkFromText
- 透かしを追加する (addWatermarkFromText)
- Adding Headers and Footers
- Watermarking a PDF with JavaScript
ただし、上記のようにプログラム経由でヘッダーやフッターを追加してしまうと、Acrobatでヘッダー・フッターの更新を行おうとしても、下図のように「このファイルにはヘッダーまたはフッターが見つかりません。ヘッダーまたはフッター情報が表示されていても、Acrobat で追加したものではないため、更新または削除することはできません。」といった警告が表示され、更新を行うことができません。
大量のファイルを一括処理するときは「ヘッダーやフッターを追加する方法 (Acrobat X)」にあるような、Acrobatの標準機能を使った方が良いだろうと思います。
この記事へのコメントはありません。