説明
PDFにページ番号を追加します。
PDFの各ページに読み取り専用のテキストボックスを追加します。
それをフッダー又はヘッダーの様に見せてページ番号を表示します。
応用例:
- PDFにフッダー又はヘッダーを追加する。
- PDFの各ページの特定位置にテキストを表示する。
- PDFの指定ページのみテキストを表示する。
- 独自のページ番号形式で上書き表示する。
動作の結果
あくまでも当サイトでの結果です。
必ず自分のパソコンで動作確認をしてください。
Acrobat | 動作 |
備考
|
---|---|---|
4
|
△
|
Acrobat 4.0 ※Windows 98SE + Excel 2000 *1 ※古いPDFのバージョンはOK! |
5
|
△
|
Acrobat 5.0.5 + Excel 2003 *1 ※古いPDFのバージョンはOK |
6
|
△
|
Acrobat 6.0.6 Pro + Excel 2003 *1 ※古いPDFのバージョンはOK |
7
|
OK
|
Acrobat 7.1.4 Pro + Excel 2003 *2 ※レジストリ操作で全面的に可能になる |
8
|
NO
|
Acrobat 8.3.1 Pro + Excel 2003 ※当Acrobatバージョンでは全面的に不可 |
9
|
NO
|
Acrobat 9.5.2 Extended + Excel 2003 ※当Acrobatバージョンでは全面的に不可 |
10
|
OK
|
Acrobat X (10.1.4) Extended + Excel 2003 |
11
|
OK
|
Acrobat XI (11.0) Extended+ Excel 2003 |
- OK : 正常処理する。
- NO : 動作しない。 又は実行時にエラーになる。
- *1 : 「PDF のバージョン」によっては正常処理出来ない場合がある。
詳細は下の 注意 を参照ください。 - *2 : 処理前のレジストリに以下を追加する必要があります。
[HKEY_CURRENT_USER¥Software¥Adobe¥Adobe Acrobat¥7.0¥AVAlert]
[HKEY_CURRENT_USER¥Software¥Adobe¥Adobe Acrobat¥7.0¥AVAlert¥cCheckbox]
"idocNewerVersionWarning"=dword:00000001
サンプル:Excel VBA
- F8キーでステップ実行しながら動作確認して下さい。
- 事前に 参照設定(AFormAutの追加版) が必要です。
Option Explicit
Sub AFormApp_Test_01()
On Error GoTo Err_AFormApp_Test_01
Dim i As Integer
Dim iPageNum As Integer
Dim bRet1 As Boolean
Dim bRet2 As Boolean
Dim bEnd As Boolean
Dim sFilePath_new As String
Dim objAFormApp As AFORMAUTLib.AFormApp
Dim objAFormFields As AFORMAUTLib.Fields
Dim objAFormField As AFORMAUTLib.Field
'初期値
Const sFilePath = "D:¥work¥sample.pdf"
bEnd = True
'Acrobatオブジェクトの定義&作成
'Acrobat 4,5,6の時
' Dim objAcroApp As Acrobat.CAcroApp
' Dim objAcroAVDoc As Acrobat.CAcroAVDoc
' Dim objAcroPDDoc As Acrobat.CAcroPDDoc
' Set objAcroAVDoc = CreateObject("AcroExch.App")
' Set objAcroAVDoc = CreateObject("AcroExch.AVDoc")
' Set objAcroPDDoc = CreateObject("AcroExch.PDDoc")
'Acrobat 7,8,9,10 の時
Dim objAcroApp As New Acrobat.AcroApp
Dim objAcroAVDoc As New Acrobat.AcroAVDoc
Dim objAcroPDDoc As New Acrobat.AcroPDDoc
'※CreateObject("AFormAut.App")のエラー
'※[429 ActiveXコンポーネントはオブジェクトを作成できません。]
'※回避用 / メモリにAcrobatを強制ロードさせる
objAcroApp.CloseAllDocs
'処理対象のPDFファイルを開く
bRet1 = objAcroAVDoc.Open(sFilePath, "")
If bRet1 = False Then
MsgBox "AVDocオブジェクトはOpen出来ません", _
vbOKOnly + vbCritical, "処理エラー"
bEnd = False
GoTo Skip_AFormApp_Test_01:
End If
Set objAcroPDDoc = objAcroAVDoc.GetPDDoc
iPageNum = objAcroPDDoc.GetNumPages
Set objAFormApp = CreateObject("AFormAut.App")
Set objAFormFields = objAFormApp.Fields
For i = 0 To iPageNum ― 1
'PDFの指定ページにテキストフィールドを追加
Set objAFormField = _
objAFormFields.Add("Field_" & i, _
"text", i, 250, 50, 350, 75)
'テキストフィールドのプロパティ設定(ページ番号)
With objAFormField
.SetBorderColor "RGB", 1, 1, 1, 0
.Alignment = "center"
.TextSize = "12"
.TextFont = "HeiseiMin-W3-UniJIS-UCS2-H"
.DefaultValue = "デフォルトとして設定される値"
.Value = "Page - " & (i + 1)
.IsReadOnly = True
End With
'設定後に開放
Set objAFormField = Nothing
Next
'PDFファイルを別名で保存
sFilePath_new = Replace(sFilePath, ".pdf", "_new.pdf")
bRet2 = objAcroPDDoc.Save(1, sFilePath_new)
If bRet2 = False Then
MsgBox "PDFファイルへ保存出来ませんでした", _
vbOKOnly + vbCritical, "エラー"
bEnd = False
End If
'PDFファイルを閉じる
bRet2 = objAcroAVDoc.Close(False)
If bRet2 = False Then
MsgBox "AVDocオブジェクトはClose出来ませんでした", _
vbOKOnly + vbCritical, "処理エラー"
bEnd = False
End If
Skip_AFormApp_Test_01:
On Error Resume Next
'変更しないで閉じます。
bRet1 = objAcroAVDoc.Close(1)
'Acrobatアプリケーションの終了
objAcroApp.Hide
objAcroApp.Exit
'オブジェクトの開放
Set objAFormFields = Nothing
Set objAFormApp = Nothing
Set objAcroPDDoc = Nothing
Set objAcroAVDoc = Nothing
Set objAcroApp = Nothing
If bEnd = True Then
MsgBox "処理は正常に終了しました。", _
vbOKOnly + vbInformation, "正常終了"
End If
Exit Sub
Err_AFormApp_Test_01:
MsgBox Err.Number & vbCrLf & Err.Description, _
vbOKOnly + vbCritical, "実行時のエラー"
bEnd = False
GoTo Skip_AFormApp_Test_01:
End Sub
実行結果
備考 , 参照先
- 当サンプルはAdobe TechNote 文書番号(ID):510690 を参照にして作りました。
Adobe TechNote 情報ではAcrobatバージョンや動作プラットフォーム(OSバージョン) や使用言語が異なる場合があります。 - Adobe TechNote 文書番号(ID):510690 で Visual Basic 6.0 (VB6)のサンプルコードがダウンロード出来ます。
- AFormApp の OLE Automation Objects に関する情報(英語のみ)は
http://partners.adobe.com/public/developer/en/acrobat/sdk/FormsAPIReference.pdf
109 Page を参照してください。 - 実行時のエラーは以下になります。
-2147220991 現在 Acrobat で文書が開いていません。
Set objAFormFields = objAFormApp.Fields
を実行する時に上記のエラーになります。
動作確認環境
- Acrobat 4.0 + Office 2000
+ Windows98SE( + WindowsUpdate) - Acrobat 5.0.5 + Office 2003( + SP3)
+ WindowsXP Pro( + SP3 + WindowsUpdate) - Acrobat 6.0.6 Pro + Office 2003( + SP3)
+ WindowsXP Pro( + SP3 + WindowsUpdate) - Acrobat 7.1.4 Pro + Office 2003( + SP3)
+ WindowsXP Pro( + SP2 + WindowsUpdate) - Acrobat 8.3.1 Pro + Office 2003( + SP3)
+ WindowsXP Pro( + SP3 + WindowsUpdate) - Acrobat 9.5.2 Extended + Office 2003( + SP3)
+ WindowsXP Pro( + SP3 + WindowsUpdate) - Acrobat X (10.1.4) Extended + Office 2003( + SP3)
+ WindowsXP Pro( + SP3 + WindowsUpdate) - Acrobat XI (11.0) Extended + Office 2003( + SP3)
+ WindowsXP Pro( + SP3 + WindowsUpdate)
コメント投稿について
- AFormAppオブジェクトに関する技術的な質問に返答できる知識を当サイト管理者は持っていません。
その前提でコメント投稿を開放します。
< サンプル一覧 >