AcroExch.PDDoc: InsertPages メソッド

TOP > AcroExch.PDDoc > InsertPages      [...]


説明

現在のPDFドキュメント内で指定された頁の後に、別のPDFドキュメントを指定ページ数分だけ挿入する。

形式

VARIANT_BOOL InsertPages(long nInsertPageAfter,
      LPDISPATCH iPDDocSource,
      long nStartPage,
      long nNumPages,
      long bBookmarks);

引数

  1. 第1引数(nInsertPageAfter) :
    挿入を開始するページ番号。このページ番号の後に挿入される。なおページ番号1が0だから、最初は-1となる。ページ番号1は0として扱う。但し、最初のページの前に入れる時はPDBeforeFirstPage(=-1)、最終頁の後に追加する時はPDLastPage(=-2)の定数を指定する事も出来る。数値-1.-2を指定してももちろん構わない。このPDBeforeFirstPageとPDLastPageの定数を扱う時はIAC.BAS標準モジュールの追加が別途必要となる。
  2. 第2引数(iPDDocSource) :
    挿入するPDFドキュメントのPDDocオブジェクト。
  3. 第3引数(nStartPage) :
    挿入するPDFドキュメントの開始ページ番号。1ページ目は0。
    問題点有り。<注意事項>を参照。
  4. 第4引数(nNumPages) :
    挿入するPDFドキュメントのページ数。
  5. 第5引数(bBookmarks) :
    しおりも追加する時はTrue(-1)。追加しない時はFalse(0)。
    問題点有り。<注意事項>を参照。

戻り値

  • -1:成功。
  • 0:失敗。または挿入出来なかった。

動作するバージョン

VersionAdobe
Acrobat
備考
4-Acrobat 4.0    ※Windows 98SE + Excel 2000
5
-
Acrobat 5.0.5
6
-
Acrobat 6.0.3 Pro
7-Acrobat 7.0.9 Pro
Acrobat 7.1.4 Pro
8OKAcrobat 8.1.2 Pro
9-Acrobat 9.3.2 Extended
10-Acrobat X (10.1.8) Extended
11-Acrobat XI (11.0.04) Extended
  • OK = 動作する。
  • NO = 動作しない。 戻り値が0を返す。
  • - = 未確認。

サンプル:ExcelのVBA

説明:2つのPDFファイル(Test01_1.pdfとTest01_2.pdf)を結合して、
Test01_NEW.pdfファイルを作成する。しおりも同時に入れる。

  • F8キーでステップ実行しながら動作確認する。
  • 事前に参照設定を事前にする。
001 Sub AcroExch_PDDoc_InsertPages() 002 003 Dim AcroPDDocNew As New Acrobat.AcroPDDoc 004 Dim AcroPDDocAdd As New Acrobat.AcroPDDoc 005 Dim lRet As Long 006 Dim lGetNumPages As Long 007 Dim lPages As Long 008 009 lPages = 0 010 '空のPDFファイルを作成する 011 lRet = AcroPDDocNew.Create() 012 013 '空のPDFファイルに追加する 014 lRet = AcroPDDocAdd.Open("E:\Test01_1.pdf") 015 lGetNumPages = AcroPDDocAdd.GetNumPages() 016 lRet = AcroPDDocNew.InsertPages(lPages - 1, _ 017 AcroPDDocAdd, 0, lGetNumPages, True) 018 lRet = AcroPDDocAdd.Close() 019 020 lPages = lPages + lGetNumPages 021 022 '更にPDFファイルを追加する 023 lRet = AcroPDDocAdd.Open("E:\Test01_2.pdf") 024 lGetNumPages = AcroPDDocAdd.GetNumPages() 025 lRet = AcroPDDocNew.InsertPages(lPages - 1, _ 026 AcroPDDocAdd, 0, lGetNumPages, True) 027 lRet = AcroPDDocAdd.Close() 028 029 '結合したPDFファイルを最後に保存する 030 lRet = AcroPDDocNew.Save(1, "E:\Test01_NEW.pdf") 031 lRet = AcroPDDocNew.Close() 032 033 'オブジェクトを強制開放する 034 Set AcroPDDocAdd = Nothing 035 Set AcroPDDocNew = Nothing 036 037 End Sub


 Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
 

補足

  • 結合時にしおりの階層のトップが元のファイル名として最上位に追加される。要注意。
  • 「挿入するPDFドキュメント」をAcrobat SDKでは「ソースドキュメント」と表現している。
  • 英語サイトで関連サンプルを発見。以下にURLをメモする。詳細は未分析。
    http://www.planetpdf.com/developer/article.asp?ContentID=6232

注意事項

  • 「第3引数(nStartPage):挿入するPDFドキュメントの開始ページ番号」が0以外の時、InsertPages メソッドが失敗する場合がある。必ずではないが、何度も行っていると動作が不安定?になり、InsertPages メソッドが失敗となる。その予防策として予め挿入するPDFドキュメントから余分なページを削除しておき、InsertPages メソッドを実行する時に第3引数(nStartPage)が0になるようにする事を奨める。
  • 第5引数でTrueを指定して「しおりも追加」状態にすると、第4引数が無視され、全頁が挿入される。
  • 上記のサンプルには無いが、追加される方のPDFファイル又は追加する方のPDFのどちらかに、セキュリティ保護(制限)が掛かっている場合は、InsertPages メソッドは失敗 (戻り値= 0) になり、追加は実行されない。

動作確認環境

  • WindowsXP Pro(+ SP3) +
    Acrobat 8.1.2 Pro + Office 2003 + MicrosoftUpdate

戻る

「AcroExch.PDDoc: InsertPages メソッド」への26件のフィードバック

  1. 管理人様

    ご回答ありがとうございます。

    VBAでのレイヤ操作は無理なようですね。

    ご提案頂いた方法で検討をしてみます。

    ありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


★ 文章での質問は難しいですよネ。でも、早く解決して、家に帰りたい。


SAMURAI Plugin

コメントをする時は出来れば以下もお願いします。

  • OS名 バージョン
  • Acrobat バージョン
  • ツール(Excel等) バージョン
コメントにサンプルコードを入れる時はコードを全て全角文字列にしてください。コチラで半角に戻します。それでもエラーが回避できない時はコメント下さい。個別に対処します。



お仕事で当サイトを見ている方へ
考え込んだら、ご質問下さい。
一緒に解決策を考えましょう。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください