AcroExch.PDPage メソッド一覧

TOP > AcroExch.PDPage      [...]


一覧

PDFドキュメントの指定されたページに対しての操作等を提供するオブジェクトです。

PDDocオブジェクトからはAcquirePageメソッドで、AVPageViewオブジェクトからはGetPageメソッドで連携します。

 

<警告>

当PDPageオブジェクトのテキスト注釈に関するメソッド関連で不規則な不具合が多数発生しています。

その為、各メソッドの説明がエラーサンプル付き状態になっています。

いろいろなオブジェクト連携や、扱うPDFファイルを変えたりもしたのですが、不具合の解消には至りませんでした。

今までの中でも相当な時間を掛けましたが、解決方法(逃げ道)がいまだに見つかっていません。

Acrobat( Pro v8.1.2)本体上での手動操作には何ら問題は無いのですが、OLE操作ではうまく出来ません。

注釈機能を使っている会社等は少ないかもしれませんが、Acrobatの注釈機能は非常に優れたものです。

何とか逃げる策を考えたいと思っています。

 

メソッド 解説
AddAnnot ページに他のテキスト注釈をコピー追加します。
AddNewAnnotメソッドとの違いは同じのPDFドキュメントにある注釈を元にコピーする為に作られたメソッドです。
他のPDFドキュメントからは直接コピー追加は出来ません。
AddNewAnnot ページの指定位置にテキスト注釈を新規追加します。
同時にPDAnnotオブジェクトを作成します。
CopyToClipboard 四方範囲を指定してPDFページ上をクリップボードにコピーする。
このメソッドは32ビットのシステム上だけ利用可能です。
クリップボード上は画像イメージで保存されています。
CreatePageHilite 1文字単位の情報とそのリストをHiliteListオブジェクト情報からの範囲に従って1ページのテキスト選択であるAcroPDTextSelectオブジェクトを作成する。
CreateWordHilite 単語、又は隣接する文字列単位の情報とそのリストをHiliteListオブジェクト情報から範囲に従って1ページのテキスト選択であるAcroPDTextSelectオブジェクトを作成する。
CropPage 該当ページから指定した四隅範囲を残してページから切り取る。(=トリミングする)
Draw 頁コンテンツを指定された画面に引き込みます。(推奨しない)
DrawEx 頁コンテンツを指定された画面に引き込みます。
※これをExcel VBA上で使用するのは無理みたいです。
GetAnnot 配列で管理されている注釈オブジェクトからインデックスで指定された1つの注釈(AcroPDAnnot)オブジェクトを得ます。
GetAnnotIndex ページ指定された注釈のインデックス(頁注釈配列の中)を得ます。
GetDoc ページに関連しているAcroExch.PDDocオブジェクトを取得する。
GetNumAnnots ページに存在する注釈数の合計を返す。
注)サンプル動作不良?
GetNumber 現在の頁の頁番号を得ます。
ドキュメントにおける最初の頁はゼロ頁です。
GetRotate 現在のページに設定されている回転値を得る。
回転値は0度、90度、180度、270度の4種類のみ。
GetSize 指定されたページのサイズ(幅,高さ)をポイント(Point)オブジェクトで返します。
RemoveAnnot ページ注釈配列からインデックス指定して、該当する注釈を削除する。
SetRotate 現在のページを回転させる。
回転値は0度、90度、180度、270度の4種類のみ。

 

TOPへ

「AcroExch.PDPage メソッド一覧」への12件のフィードバック

  1. はじめまして。
    VB2005とacrobat8を使い、あるフォルダにPDFファイルをコピーしたら、天地左右3mmづつトリミングされたPDFファイルが別フォルダに作成されるというプログラムを作ろうとしています。
    トリミングはCropPageを使おうと考えているのですが、うまく動作してくれません。
    一体どこが悪いのでしょうか?
    以下ソース
    Dim objAcroApp As New Acrobat.AcroApp
    Dim objAcroAVDoc As New Acrobat.AcroAVDoc
    Dim objAcroPDDoc As New Acrobat.AcroPDDoc
    Dim AVDoc As Acrobat.CAcroAVDoc
    Dim PDDoc As Acrobat.CAcroPDDoc
    Dim pagesuu As Long
    Dim lRet As Long
    'アクロバットを起動
    lRet = objAcroApp.Show
    'PDFファイルを開いて表示する。
    lRet = objAcroAVDoc.Open("C:¥test.pdf", "")
    'PDDocを取得する
    objAcroPDDoc = objAcroAVDoc.GetPDDoc
    'ページ数を取得する
    PDDoc = objAcroAVDoc.GetPDDoc()
    pagesuu = PDDoc.GetNumPages()
    'AcroRectを作成する
    Dim pdfRect As New Acrobat.AcroRect
    pdfRect.Top = 8.504   '←8.504は3mmをポイントに直した数値
    pdfRect.Left = 8.504
    pdfRect.right = 8.504
    pdfRect.bottom = 8.504
    '頁のトリミング(天地左右-3mm)
    Dim res As Integer
    res = PDDoc.CropPages(0, pagesuu-1, 0, pdfRect)

  2. 先ほどの書き込みですが自己解決しました。
    ■変更点
    pdfRect.Top = 8.504   '←8.504は3mmをポイントに直した数値
    pdfRect.Left = 8.504
    pdfRect.right = 8.504
    pdfRect.bottom = 8.504

    '最初のページのページサイズを取得する
    Dim pdfPage As Acrobat.AcroPDPage = objAcroPDDoc.AcquirePage(0)
    Dim pdfRectTemp As Object = pdfPage.GetSize
    Dim pdfRect As New Acrobat.AcroRect
    pdfRect.Top = pdfRectTemp.y - (8.504)
    pdfRect.Left = 8.504
    pdfRect.right = pdfRectTemp.x - (8.504)
    pdfRect.bottom = 8.504
    ※配列(pdfRect)の並び順と数値を変更しました
    ご迷惑をおかけいたしました。

  3. みやさん。初めまして。
    貴重な情報、ありがとうございます。
    ここのポイントはGetSizeメソッドをうまく使った事ですね。それでpdfRectが生かされた。
    pdfRectを使ったサンプルを別途で考えていたので、参考にさせて頂くかもしれません。
    こうゆうコメントは大歓迎です。
    ※実は今日は風邪でお休みしていました。レスが遅れたのはそれが理由です。

  4. 管理人さん、はじめまして。
    いつも利用させて頂いております。m(__)m
    VBAにてPDFファイルのトリミングをおこなおうと下記の記述をしたところ
    「実行時エラー'429 ActiveXコンポーネントはオブジェクトを作成できません。」
    のエラーが出てしまいます。
    該当の箇所は、下記×の箇所になります。
    Dim ObJAcroApp As Object
    Dim ObjAcroAVDoc As Object
    Dim ObjAcroPDDocNEW As Object
    Dim ObjAcroPDDocADD As Object
    Dim objAcroRect As Object
    Dim objAcroPoint As Object
    Dim objAcroPDPage As Object
    Set ObJAcroApp = CreateObject("AcroExch.App")
    Set ObjAcroAVDoc = CreateObject("AcroExch.AVDoc")
    Set ObjAcroPDDocNEW = CreateObject("AcroExch.PDDoc")
    Set ObjAcroPDDocADD = CreateObject("AcroExch.PDDoc")
    Set objAcroRect = CreateObject("AcroExch.Rect")
    Set objAcroPoint = CreateObject("AcroExch.Point")
    × Set objAcroPDPage = CreateObject("AcroExch.PDPage")
    多数のPCにて使用を想定しているため、この記述をしております。

    OS:Windows7 SP1 64BIT
    Acrobat Ver:Acrobat Pro DC ver2015.006
    ツール:Excel2010

    お忙しいところ大変お手数ですが、ご教授頂ければ幸いです。
    よろしくお願い致します。

  5. kage さん
    はじめまして。

    objAcroPDPage、つまりPDPageオブジェクトは残念ですが CreateObject によって作成するものでは有りません。
    オブジェクト連携図を御覧ください。PDDoc又はAVPageViewオブジェクトを作成し、そこから連携して作成されるオブジェクトです。(分かりにくい・・ですネ
    よってSet objAcroPDPage = CreateObject("AcroExch.PDPage")
    は実行エラーになります。
    実際に当サイトには「CreateObject("AcroExch.PDPage")」という感じのサンプルは存在しません。

    正しくはSet objAcroPDPage = ObjAcroPDDocNEW.AcquirePage
    又はDim objAcroAVPageView As Object
    ・・・
    Set objAcroPDPage = objAcroAVPageView.GetPage
    みたいな使い方です。
    他にも似たような感じの箇所は有るはずなので「実行時エラー'429」時は思い出してください。

    ご確認の程、よろしくお願いいたします。

  6. 管理人さん。
    早々にご回答いただきありがとうございました。
    おっしゃる通り、おかしなことをしていました。(-_-;)
    ご教示いただいたとおりに実行したところ、希望通りの処理になりました。
    迅速な対応をしていただき、大変助かりました。

  7. 管理人さん
    Acrobat Pro 11でツールからテキスト認識をページ単位で行えるかと
    思いますが、VBAで座標を指定して、ある特定の位置のテキスト認識が
    可能かご教示頂けると幸いです。
    お忙しいところお手数をお掛けしますが宜しくお願い致します。

    環境は
    Windows10
    Acrobat Pro 11
    Access VBA

  8. たけ さん はじめまして。
    取りあえず思い出せる範囲で返答します。

    1)CropPageで範囲を指定してトリミングを行う。
    2)上記に対して、CreatePageHilite又はCreateWordHiliteでテキストを抽出する

    てな感じです。
    2のCreatePageHilite又はCreateWordHiliteでも範囲指定が有りますが、かなり面倒だった様な気がします。それならば1でトリミングしたページの全体を抽出した方が楽だと思います。
    サンプルをステップ実行しながら、見て頂ければ理解できるかと思います。(タブン

    しかし。テキスト認識はコメント投稿者からの要望、問題点、解決、失敗(=絶望)、等。かなりの時間を取った箇所なのですが。
    すでにかなりの部分を忘れています。(汗
    2日ほどお時間をください。

    ▼2019/2/4 23:12 追加
    2の部分は
    lRet = objAcroHiliteList.Add(1, 99999)
    てな感じにサンプルを変更したら、トリミングしたテキストを全て抽出できる・・;。

  9. たけ さんへ
    サンプルを作ってみました。
    指定座標で切りとって、そこから全テキストを取得する様にしました。

    動作環境:Win10 64bit + Acrobat XI Pro + Excel 2007

    上記は単語単位でテキストの取得CreateWordHiliteを行っています。文字単位での取得が最適と考える場合はCreatePageHiliteをご使用下さい。

    座標の使い方についてはコチラを参照ください。

    DEBUG_MODE = False
    にするとAcrobatがデスクトップに表示されずに高速で処理が可能になります。

    以上、ご検証ください。

  10. 管理人さん
    早急にご回答いただきましてありがとうございました。
    また、わかりやすいコメント付のサンプルまで作成していただきまして
    お手数をお掛けしまして大変申し訳ありませんでした。

    なお、私のわかりにくい質問が悪かったのですが、PDFのテキスト読み取りを
    行いたかったのではなく、PDFの画像をテキスト化した上で、テキスト読み取ることが可能かがおわかりでしたらご教示頂けると幸いです。
    今後、わかりやすく質問しますので度々で申し訳ありませんが
    宜しくお願い致します。

  11. たけさんへ
    そ、そうですか~w

    >Acrobat Pro 11でツールからテキスト認識をページ単位で行える
    >かと思いますが、VBAで座標を指定して、ある特定の位置の
    >テキスト認識が可能か

    「テキスト認識」を起動させるという事ですか。
    はっきりと返答できます。

    無理です。

    1)「テキスト認識」そのものを起動するVBA(OLE)が無い
    2)VBAから「テキスト認識」のメニュー起動は出来るが、その次がVBAは出来ない
    3)「テキスト認識」つまりOCR機能はOLEそのものがサポートしてない

    上記サンプルの CropPage を使って指定座標でトリミングを行い、そのPDFを出力する。その出力ファイルを別の XXX ソフトで一括でOCR「テキスト認識」する。・・ぐらいかな。

    たぶん、当サイトでは無理だと思います。

  12. 管理人さん
    ご回答いただきましてありがとうございます。
    できないことがわかってスッキリしました。
    いろいろとご教示頂きまして大変お手数をお掛けしました。

コメントを残す

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

CAPTCHA


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


SAMURAI Plugin

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

  • OS名 バージョン
  • Acrobat バージョン
  • ツール(Excel等) バージョン
コメントにサンプルコードを入れるとエラーになる場合が有ります。その時はコードの前後に <code> ・・・</code> タグを入れてください。

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