AcroExch.PDDoc: CropPages メソッド

TOP > AcroExch.PDDoc > CropPages      [...]


説明

指定されたページをトリミング(範囲指定で切り取り)します。

トリミング結果が72ポイント(1インチ)未満ならば要求が無視されます。

形式

VARIANT_BOOL CropPages(long nStartPage, 
               long nEndPage,
               short nEvenOrOddPagesOnly,
               LPDISPATCH iAcroRect);

戻り値

  • -1 : 成功。
  • 0 : 失敗。

引数

  1. 第1引数(long nStartPage) :
    処理開始ページ。0が開始ページ。
  2. 第2引数(long nEndPage) :
    処理終了ページ。
  3. 第3引数(short nEvenOrOddPagesOnly) :
    PDFドキュメントの対象範囲
      0:全てのページ
      1:奇数ページのみ
      2:偶数ページのみ
  4. 第4引数(LPDISPATCH iAcroRect) :
    トリミングする範囲を指定したAcroRectオブジェクト

動作するバージョン

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

説明:Test01.PDFの全体ページを上下左右ともに同じサイズでトリミングし、別名で保存する。

  • F8キーでステップ実行しながら動作確認する。
  • 事前に参照設定をする。
001 Sub AcroExch_PDDoc_CropPages() 002 003 Dim objAcroApp As New Acrobat.AcroApp 004 Dim objAcroAVDoc As New Acrobat.AcroAVDoc 005 Dim objAcroPDDoc As Acrobat.AcroPDDoc 006 Dim objAcroPDPage As Acrobat.AcroPDPage 007 Dim objAcroRect As New Acrobat.AcroRect 008 Dim objAcroPoint As Acrobat.AcroPoint 009 Dim lPageCount As Long 010 Dim lRet As Long 011 012 'アクロバットを起動 013 lRet = objAcroApp.Show 014 'PDFファイルを開いて表示する 015 lRet = objAcroAVDoc.Open("E:\Test01.pdf", "") 016 'PDDocを取得する 017 Set objAcroPDDoc = objAcroAVDoc.GetPDDoc 018 'ページ数を取得する 019 lPageCount = objAcroPDDoc.GetNumPages() 020 '最初のページのページサイズを取得する 021 Set objAcroPDPage = objAcroPDDoc.AcquirePage(0) 022 Set objAcroPoint = objAcroPDPage.GetSize 023 024 '5mmをポイントにした値 025 Const lPointSise As Long = 2.834 * 5 026 'AcroRectオブジェクトにトリミング範囲を設定(上下左右-5mm) 027 objAcroRect.Top = objAcroPoint.y - lPointSise 028 objAcroRect.Left = lPointSise 029 objAcroRect.Right = objAcroPoint.x - lPointSise 030 objAcroRect.bottom = lPointSise 031 'PDF全ページのトリミングを実行 032 lRet = objAcroPDDoc.CropPages( _ 033 0, lPageCount - 1, 0, objAcroRect) 034 035 '別名でPDFファイルを保存する 036 objAcroPDDoc.Save _ 037 (PDSaveFull + PDSaveLinearized + _ 038 PDSaveCollectGarbage), _ 039 "E:\Test01_T.pdf" 040 '現在表示しているPDFファイルを変更無しで閉じる 041 lRet = objAcroAVDoc.Close(1) 042 'Acrobatアプリケーションを終了する。 043 lRet = objAcroApp.Hide 044 lRet = objAcroApp.Exit 045 046 'オブジェクトを強制開放する 047 Set objAcroRect = Nothing 048 Set objAcroPoint = Nothing 049 Set objAcroPDPage = Nothing 050 Set objAcroPDDoc = Nothing 051 Set objAcroAVDoc = Nothing 052 Set objAcroApp = Nothing 053 054 End Sub


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

補足

  • コメントを頂いた「みや」さんの内容をほぼそのまま参考使用させて頂きました。
    この場の借りてお礼を申し上げます。m(_ _)m

動作確認環境

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

戻る

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

  1. お世話になります。いつも参考にさせていただいております。ありがとうございます。

    現在,"Acrobat Proのメニューの「ページのトリミング」で余白を削除する"操作と同等のことをVBAから自動化できないかを模索しております。
    具体的には,PDFファイルを開いて,余白を削除して保存といったオペレーションになります。余白の大きさは対象ファイルによって様々です。

    当操作に関して,ご助言いただけると幸いです。よろしくお願いいたします。

  2. suzuさん。初めまして。

    「余白を削除」と言う(スバリ)機能はありません。
    (「余白を削除」はAcrobat v5.0からサポートされた機能です。)

    座標操作で同じように出来ないかとイロイロと思いましたが、計算まで持っていく過程が難しい・・・。
    「余白を削除」チェックボックスをオンにすれば言いだけなのですが、OLEはAcrobatが持っている機能の3%以下の事しか出来ないのが現状です。

    VBAならば、「悪魔の命令」 Sendkeys 命令でメニュー関連を操作(キーボード・エミュレーション)出来ますが、その間はパソコンが使用できない&失敗する場合が有ります。

    もう少し、・・・考えてみます。

  3. 管理人さん
    ご返信ありがとうございます。
    やはり,そうですか。。。
    現実的に難しいのであれば,運用(人手)でカバーしようかと思います。ご調査・ご確認いただき,ありがとうございます。

コメントを残す

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

CAPTCHA


出来るだけ早く返答する様には心がけていますが、遅くなる時もあります。ご了承ください。


SAMURAI Plugin

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

  • OS名 バージョン
  • Acrobat バージョン
  • ツール(Excel等) バージョン
コメントにサンプルコードを入れる時はコードの前後に <code> ・・・</code> タグを入れないとエラー(403)になります。それでもエラーが回避できない時はコメント下さい。個別に対処します。



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

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