AcroExch.PDAnnot メソッド一覧

TOP > AcroExch.PDAnnot      [...]


一覧

PDAnnot オブジェクトは注釈の作成や変更、情報の取得を目的としたオブジェクトです。

PDPage オブジェクトとも密接な連携を必要とするオブジェクトです。

このPDAnnot オブジェクトを理解しないとPDPage オブジェクトが使えません。

 

メソッド 解説
GetColor 注釈の色(カラー番号)を得ます。
GetContents テキスト注釈のコンテンツ(テキスト)を得ます。
GetDate 注釈の日付(年月日時分秒+ミリ秒)を得ます。
GetRect PDFページ上のテキスト注釈、又はPopup注釈の長方形位置(Top.Bottom,Left,Right)を得ます。
GetSubtype 注釈のタイプを得ます。タイプは Text , Popup , Link , Highlightの4種類です。
GetTitle 注釈の作成者を得る。注)タイトルでは無い。
IsEqual PDFファイル上の注釈が別の注釈と等しいかをチェックする。
IsOpen PDFファイル上のテキスト注釈がドキュメント上で開いているかチェックする。
※但し、GetSubtypeメソッドの結果がPopupの時だけ。
IsValid PDFファイル上の注釈をチェックする。
Perform PDFファイル上のリンク注釈の動作を実行します。
つまりリンク先に移動します。
SetColor PDFファイル上の注釈の色を設定します。色はカラー番号で指定します。
SetContents PDFファイル上のテキスト注釈のテキスト(=コンテンツ)をセットします。
SetDate PDFファイル上の注釈の日付をセット又は変更します。
SetOpen PDFファイル上のテキスト注釈を開いたり、閉じた状態に設定する。
SetRect 注釈のGetSubtypeが"Text"の時は注釈アイコンのサイズを設定(変更)します。
注釈のGetSubtypeが"Popup"の時はテキスト編集のサイズを設定(変更)します。
注釈のGetSubtypeが"Link"の時は何も変化ありません。
よって、注釈のGetSubtypeが"Popup"の時のみ使用します。
注釈のGetSubtypeが"Highlight"の時の動作は未確認。 
SetTitle PDFファイル上のテキスト注釈の作成者を設定します。
注)タイトルでは無い。

注意

  • SDKではテキスト注釈のテキスト部分をコンテンツと言っていますが、基本的にテキストと思っても構いません。

 

TOPへ

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

  1. こんばんわ^^
    sun eternityの管理人暗黒の鬼神です
    コメントから着ました
    コチラのブログに招待して
    いただいて感激です^^
    Javaのオブジェクト指向
    に関しては”まったくの無知です”
    ん~JAVAはオブジェクト
    Cはポイントがむずいです・・・
    (単に俺の能力がないだけかも・・・)
    これからもちょくちょく
    顔出すんで
    よろしくお願いしますね^^

  2. ここはJavaの解説は全くしていません。基本はExcel VBAです。
    ココはAcrobat&PDFをExcel VBAでプログラミング操作する為の技術リファレンス的なサイトです。オブジェクト連携がチョットややこしいですが、そこを優しく解説しています。
    ちなみに、このようなサイトは海外でもネット上では存在しません。JavaScriptでの解説は存在しますが、すこし敷居が高い?かも。
    既に200頁を越えた内容ですが、それでもまだ半分ぐらいしか出来ていない状態です。更新すればする程、やらなければいけない分野が出てきてしまいます。
    今年には全体が出来る事を願っていますが、多分無理だろうな~。(汗

  3. 初めて聞く指向でよくわからなかったので
    PDAnnot でためしにくぐってみました
    1   位    に  でてきたよ!
    というかVBAはなんとなーくわかるけど
    Acrobat&PDFとは?いったい?
    くぐっても英語ページやビデオカードやら
    が出てきました
    型がセット・・・
    うーん・・・
    Cの自分にはまだまださっぱりです

  4. Acrobat Reader をExcelからコントロール操作する、と思っても構いません。
    なお「ぐぐっ」てもこのサイトがほとんど1位です。何度も書きますがこの手の技術情報(=[Excel] VBAからOLE AutomationでAcrobat又はAcrobat Readerを操作する)は世界のネット上でも、このサイトだけです。※Adobe社サイトの情報(=英語)は別です。
    ※2つだけですが英語サイトで似たサイトがあります。そこはサンプル集、又はQ&Aだけのサイトです。
    でも、この情報を必要としている人が少数エンジニアですがいる事は確かです。内容はAdobe社の正規のSDKを元に作成しています。ただ、このSDKはExcel VBAを意識した内容では無いし、説明が余りにも簡単、かつ膨大なので理解出来ない部分が多いのです。SDKの基本はJavaを意識した内容みたいです。
    それでこのサイトでは、その不明瞭な部分を理解しやすいVBAを使って、詳細に解説する為に立ち上げました。自分自身でも未だに英語(=SDK)内容が理解出来ない部分が多々有ります。注)英語は中学生程度の学力。w
    このサイトの情報はフリーソフトなどと違ってプログラム・エンジニア向けなので、5年、10年経っても使える内容を含んでいる事です。そうゆう意味で結構力を入れています。

  5. はぁ~
    ほんとすばらしいですね
    ほんと他のページ探してもないです
    自分はC中心なのでCの記事は
    たくさんみつかるのですが
    この記事はほんと唯一のようですね
    新しい技術・・・というか
    少ない情報下の中で記事(リファレンス)
    するなんて早々できることじゃありません
    でもAdobe Acrobatにはあんまり詳しくありません(汗)
    インターネットのページの回覧を助けて
    るんだろうな~ぐらいしか知りません
    それではっ失礼しました

  6. >新しい技術・・・というか
    イエイエ、技術的には結構古い(1996~)です。
    ただ、PCの処理能力(CPU)を必要だったので昔は敬遠しているエンジニアが多かったんです。※NORITOもその一人。
    でも、今はPCの処理能力が上がったので、十分適用できるようになりました。
    しかしJavaとか、WEB等の新しい技術に目が行って、このような古い技術(=OLE)を知らない人が多いみたいです。
    とにかく、少数エンジニア向けサイトですが、いずれかは内容をもう少し工夫して、アクセス数を平均1000件/日にはしたいな~と思っています。(欲
    その為にも、あと少なくても100頁は必要かな?(汗

  7. はじめまして

    既存のPDFに特定の文字列を発見したらそこに外部リンクを設定できるようなマクロを組もうとおもっています。
    とりあえずできるかどうか確かめるということでAcrobat X Proの体験版でこちらのサイトをお手本にいろいろ試してまして
    特定の文字列を検索してそれを選択状態にすることはできたのですが、それに対して外部リンクを設定することができなくて・・・。

    Acrobatの操作で言えば

    文字列を選択状態にする→右クリック→リンクを作成→webページを開くを選択して次にボタン押下→URLを入力

    という操作をしたいのですがこれは可能でしょうか?

  8. H2Oさん。初めまして。
    未確認情報ですが、取り急ぎ返答させて頂きます。

    Acrobat X はまだ試していないので、機能の追加や削除等は未確認です。
    しかし過去の経緯から予測するとAcrobat v9.0と同じと推測しています。

    それならば、H2Oさんが望む機能は当サイトで紹介しているOLEで出来ないと思われます。
    目的のテキストを選択状態には、ある程度は出来ます(※バージョン等により不安定)が、それに外部リンクやハイライト等の処理はOLEには機能がありません。
    唯一メニューコマンドを実行するOLEメソッドは有ります。その時に該当するメニューに付いている固有の名前を指定する必要が有ります。しかしAdobe社は正確な情報公開を何年も怠っています。

    よって残念ですが、当サイトの情報だけでは不可能となります。

    但し、当サイトで未開拓のAcrobat JavaScriptを調査する価値は有るかもしれません。
    なぜならば、こちらは常に微々たるですがバージュンアップしている気配を感じるからです。(勘
    これに関してはH2Oさんに調べて頂くしかありません。

    過去に似たような質問を受けて3週間ほど格闘しましたが、負けました。(悲
    期待した返答が出来なくて、エンジニアとして、少し心苦しいです。

  9. 返答ありがとうございます。

    ちょうど海外のフォーラムでVB.NETでリンクを追加すると言う内容のやり取りがありまして、そこでJSObjectを使用しておりました。

    Dim objAcroApp As New Acrobat.AcroApp
    Dim objAcroPDDoc As New Acrobat.AcroPDDoc

    Dim objJSO As Object
    Dim annot As Object
    Dim strPDFPath As String 'PDFファイルパス
    Dim linkRect(3) As Long 'リンク設定範囲

    'Acrobatを起動する。
    objAcroApp.Show
    'ファイルを開く
    objAcroPDDoc.Open strPDFPath
    'JSOObjectを得る
    Set objJSO = objAcroPDDoc.GetJSObject

    ・・・中略(文字列検索してRect情報を取得する処理)・・・

    Set annot = objJSO.addLink(iPage, linkRect)
    annot.setAction ("this.getURL('" & LINK(i) & "');")

    と言うような感じで何とか外部リンクを設定することができました。

    setActionのパラメータにはJavaScript actionを設定するとあり、JavaScriptAPIとは別物なんだろうな?と情報を探すとFlashで使う言語でActionScriptというのがありまして、これ、もしくはこれに近いのかな?と、まだまだ勉強することがいっぱいのようですが・・・。
    とりあえず道は見えてきた気がします。本当にありがとうございました。

  10. H2Oさんへ。

    逆に教えて頂きました。(汗
    出来れば、そのサイトURLも教えて頂けれる嬉しいです。

    ※やはり、GetJSObjectメソッドが鍵でしたか。
    ※これに関する情報が無くて困ってます。

  11. 該当フォーラムのURLは
    http://www.justskins.com/forums/adding-links-in-vb-116624.html
    です。

    まだぜんぜん理解できていないのですがPDDoc.GetJSObjectによって
    http://kb2.adobe.com/jp/cps/511/511719.html
    ↑こちらで入手したJavaScript API リファレンスのDocオブジェクトに
    相当するものが得られるのではないかな?と想像してます。
    addLinkメソッドを使ってLinkオブジェクト(ソースで言うannot)を
    取得してsetActionメソッドを実行してますし。
    GetJSObjectで得られたオブジェクトで
    MsgBox objJSO.numPages
    としてみたところPDFファイルのページ数を得ることができました。

    とりあえずリファレンスを熟読していろいろ試してみようかとおもってます。

  12. H2Oさんへ。

    ありがとうございます。

    >http://kb2.adobe.com/jp/cps/511/511719.html

    このバージョンの日本語版があったとは・・。
    なぜ見つからなかったのか、不思議です。

    >http://www.justskins.com/forums/

    上記フォーラムの存在は初めて知りました。
    イロイロと海外のサイトも見ていますが、GetJSObjectに関する情報は非常に少なく、再現性もマレです。
    ※Adobe社もこれに関する詳細なリファレンスが無料公開されてない。
    JavaScript API リファレンスに書かれているからと言って、出来るとは限らないのが実際の大きな壁です。
    たぶん、引数の書き方の問題ではないかと前々からは予想していましたが。
    今回の件から、少しは前進できる予感がしました。

    それともう一つお願いがあります。

    >・・中略(文字列検索してRect情報を取得する処理)

    に関するサンプルを頂けないでしょうか?
    Acrobatのバージョンの問題かは不明ですが、検索して、その「Rect情報を取得」がうまく出来なく、前回(1年前)は挫折しました。
    何か自分が勘違い?していると思っています。(恥

    とにかく、「GetJSObjectに関する情報」は有難いです。
    今は多忙なので後日、詳細を再確認させて頂きます。(嬉

  13. 別件でいろいろ立て込んでいたため返事が遅くなりましてすいません。

    Rect情報を取得する処理ですが、こちらも不完全なものでしかないです。
    長くなりますがご了承ください。

    処理の流れとしては

    1).ドキュメントの総ページ数を取得する。
    2).1ページ目から順に3.~9.をループ処理
    3).処理中のページの全テキストのPDTextSelectオブジェクトを得る
    4).PDTextSelectからテキストを順に取得して
    「全テキストを結合した文字列」と
    「その文字列のn番目の文字はPDTextSelectの
    何番目のテキストであるかをセットした配列」を作成
    5)InStr関数で検索文字列があるかをチェック。
    見つかる限り6)~9)の処理を行う
    6).4)で作成した配列を使ってInStrでみつかった文字列の先頭と末端が
    PDTextSelectの何番目のテキストであるかを得る
    7).6)で得た位置の情報から該当位置のみのハイライトリストオブジェクトを
    設定しPDTextSelectオブジェクトを得る
    8).GetBoundingRectメソッドでRect情報を得る
    9).JSOObjectを利用して外部リンクを設定する。

    という感じで行っています。

    で、問題がいろいろ出てくるのですが
    a).6)で正しいPDTextSelectが得られない場合がある。
    例えば3)で得られた処理中ページのPDTextSelectに含まれるテキストの
    総数が500であり、文字列検索した結果490番目の位置に目的の文字列が
    見つかったためHiliteList.add(490,1)として該当部分の
    PDTextSelectを得ようとしたら、ずれた位置のPDTextSelectが得られたり
    1つと指定しているのにGetNumTextをしてみたら2個のテキストが得られたり
    PDTextSelectがNothingであったりと正確に指定したとおり得ることが
    できないことがあります。
    これのはっきりした原因はよくわからないのです。
    とりあえず応急処置として7)で得られたPDTextSelectの先頭の文字列が
    本来得たかった文字列と一致するかチェックし、一致しなければ
    一つ前の位置で7)の処理を再度行い一致するまで補正し続ける
    というやり方で正しい位置が得られるようにしました。
    (Nothingであった場合にも同様)
    b).a)テキストの区切りがHiliteListの設定によって変わる場合がある。
    a)の修正中にあったのですが半角スペースや改行がある場合、
    PDTextSelectのとり方によってテキストの区切られ方が
    変わってくることがあります。
    (もしかしたらそれ以外にも変わる要因があるかもしれません)
    そのためa)のチェックで一致するものがないという状況に
    なることがあります。
    これも応急処置で半角スペースと改行を削除した上で
    一致チェックを行うことにしました。
    c).半角英数の後に(や.などが続くとそこも含めて1テキストと
    解釈されるため厳密に得たいと思っている文字列以上の
    範囲のRect情報しか得られない。
    これはこのマクロでやろうとしているPDFでは影響は
    無視できるであろう、として対策は考えませんでした。
    逆にハイフンは区切られてしまうので検索文字列にハイフンが含まれると
    複数テキストにまたがってしまうため、4)~6)でいちいち文字列を
    全結合してInStrで検索、何番目から何番目のテキストを得るという
    めんどくさい処理にしています。
    d).ずれが大きい場合検索文字列が連続していると補正が正しく効かなくなる。
    結局前回発見した位置から後ろにずらしてチェックするような補正にすれば
    いいのですが毎回補正処理を何回もする羽目になることになり、
    また処理のほとんどをJSOObject経由で行うように作り直したため
    実際に修正しないまま終わりました。

    以下、ソースです。
    無駄なことをしている部分もあると思いますがお察しください・・・。

    001 Option Explicit
    002
    003 Dim i As Long
    004 Dim j As Long
    005 Dim IPage As Long
    006 Dim lCnt As Long
    007 Dim lPos As Long
    008 Dim lStart As Long
    009 Dim lEnd As Long
    010 Dim lCntSub As Long
    011 Dim lLen As Long
    012 Dim strText As String
    013 Dim strSubText As String
    014
    015
    016 Sub implantLink()
    017
    018 On Error GoTo ErrorHandler
    019
    020 ' Acrobatオブジェクトの定義&作成
    021 Dim objAcroApp As New Acrobat.AcroApp
    022 Dim objAcroPDDoc As New Acrobat.AcroPDDoc
    023 Dim objAcroHiliteList As New Acrobat.AcroHiliteList
    024
    025 Dim objAcroAVDoc As Acrobat.AcroAVDoc
    026 Dim objAcroPDPage As Acrobat.AcroPDPage
    027 Dim objAcroPDTextSelect As Acrobat.AcroPDTextSelect
    028 Dim objAcroPDTextSelectCheck As Acrobat.AcroPDTextSelect
    029 Dim objAcroRect As Acrobat.AcroRect
    030 Dim objJSO As Object
    031 Dim annot As Object
    032
    033 Dim lRet As Long '戻り値
    034 Dim lPages As Long '全頁数
    035
    036
    037 Dim lRevise As Long '補正位置
    038 Dim lArray() As Long '文字位置情報
    039 Dim strStr() As String '文字情報
    040 Dim strStr2() As String '文字情報
    041 Dim strPDFPath As String 'PDFファイルパス
    042 Dim linkRect(3) As Long 'リンク設定範囲
    043 Dim SEARCH_WORD(1) As String '検索文字列
    044 Dim LINK(1) As String 'URL文字列
    045
    046 strPDFPath = "xxx.pdf"
    047
    048 SEARCH_WORD(0) = "検索文字列1"
    049 SEARCH_WORD(1) = "検索文字列2"
    050 LINK(0) = "http://url1"
    051 LINK(1) = "http://url2"
    052
    053 'Acrobatを起動する。
    054 objAcroApp.Show
    055 'ファイルを開く
    056 objAcroPDDoc.Open strPDFPath
    057 'JSOObjectを得る
    058 Set objJSO = objAcroPDDoc.GetJSObject
    059 '総頁数を取得する
    060 lPages = objAcroPDDoc.GetNumPages
    061 'PDFを画面表示する
    062 Set objAcroAVDoc = objAcroPDDoc.OpenAVDoc("外部リンク埋込PDF")
    063 '全テキストのハイライトリストを作成する
    064 lRet = objAcroHiliteList.Add(0, 32767)
    065
    066 '頁ごとに処理
    067 For IPage = 0 To lPages - 1
    068 '現頁のPDPageオブジェクトを作成する
    069 Set objAcroPDPage = objAcroPDDoc.AcquirePage(IPage)
    070 'ハイライトリスト(objAcroHiliteList)からページ単位の
    071 'テキスト選択のPDTextSelectオブジェクトを作成する
    072 Set objAcroPDTextSelect = _
    073 objAcroPDPage.CreateWordHilite(objAcroHiliteList)
    074 '文字位置情報を取得
    075 lArray = createarray(objAcroPDTextSelect)
    076 '抽出した文字列の数(Index)を取得する
    077 lCnt = objAcroPDTextSelect.GetNumText()
    078 '文字列を結合
    079 strText = ""
    080 For i = 1 To lCnt
    081 strText = strText & objAcroPDTextSelect.GetText(i - 1)
    082 ReDim Preserve strStr(i)
    083 strStr(i) = objAcroPDTextSelect.GetText(i - 1)
    084 Next i
    085 '検索文字列ごとに処理
    086 For i = 0 To UBound(SEARCH_WORD)
    087 '補正値の初期化
    088 lRevise = 0
    089 '検索開始位置の初期化
    090 lPos = 1
    091 Do
    092 lRet = InStr(lPos, strText, SEARCH_WORD(i))
    093 If lRet = 0 Then
    094 GoTo NotFound:
    095 End If
    096 lPos = lRet + Len(SEARCH_WORD(i))
    097 strSubText = Mid(strText, lRet, Len(SEARCH_WORD(i)))
    098 '開始位置を得る
    099 lStart = lArray(lRet)
    100 '終了位置を得る
    101 lEnd = lArray(lRet + Len(SEARCH_WORD(i)) - 1)
    102 Revise:
    103 '該当箇所のハイライトリストを作成する
    104 Dim objAcroHiliteListCheck As New Acrobat.AcroHiliteList
    105 lRet = objAcroHiliteListCheck.Add(lStart - 1 - lRevise, 1 + lEnd - lStart)
    106 'ハイライトリスト(objAcroHiliteListCheck)から
    107 'テキスト選択のPDTextSelectオブジェクトを作成する
    108 Set objAcroPDTextSelectCheck = _
    109 objAcroPDPage.CreateWordHilite(objAcroHiliteListCheck)
    110 'TextSelectが取得できなかったら補正
    111 If objAcroPDTextSelectCheck Is Nothing Then
    112 lRevise = lRevise + 1
    113 'ハイライトリストのクリア
    114 Set objAcroHiliteListCheck = Nothing
    115 GoTo Revise:
    116 End If
    117 '抽出した文字列の数(Index)を取得する
    118 lCntSub = objAcroPDTextSelectCheck.GetNumText()
    119 '文字列を結合
    120 strSubText = ""
    121 For j = 1 To lCntSub
    122 strSubText = strSubText & objAcroPDTextSelectCheck.GetText(j - 1)
    123 ReDim Preserve strStr2(j)
    124 strStr2(j) = objAcroPDTextSelectCheck.GetText(j - 1)
    125 Next j
    126 'スペースおよび改行コードを除いて比較
    127 '何がゴミとしてくっついてくるかわからないので修正がいるかも
    128 ' If RepCRLF(Trim(strStr2(1)), "") RepCRLF(Trim(strStr(lStart)), "") Then
    129 If RepCRLF(Trim(strStr2(1)), "") Then
    130 lRevise = lRevise + 1
    131 'ハイライトリストのクリア
    132 Set objAcroHiliteListCheck = Nothing
    133 GoTo Revise:
    134 End If
    135 'Rect情報を取得する
    136 Set objAcroRect = objAcroPDTextSelectCheck.GetBoundingRect
    137 'テキストを選択状態にする
    138 lRet = objAcroAVDoc.SetTextSelection(objAcroPDTextSelectCheck)
    139 'テキスト選択状態を見やすい位置表示にする
    140 lRet = objAcroAVDoc.ShowTextSelect()
    141 '外部リンクを追加する
    142 linkRect(0) = objAcroRect.Left
    143 linkRect(1) = objAcroRect.Top
    144 linkRect(2) = objAcroRect.Right
    145 linkRect(3) = objAcroRect.bottom
    146 Set annot = objJSO.addLink(IPage, linkRect)
    147 annot.setAction ("this.getURL('" & LINK(i) & "');")
    148 'テキスト選択状態の破棄
    149 lRet = objAcroPDTextSelectCheck.Destroy
    150 'ハイライトリストのクリア
    151 Set objAcroHiliteListCheck = Nothing
    152 Loop Until lPos > Len(strText)
    153 NotFound:
    154 Next i
    155 Next IPage
    156
    157 'PDFファイルを別名で保存
    158 lRet = objAcroPDDoc.Save _
    159 (PDSaveFull + PDSaveLinearized + _
    160 PDSaveCollectGarbage, _
    161 strPDFPath & "_")
    162
    163 'PDFファイルを閉じる
    164 objAcroPDDoc.Close
    165 'Acrobatを閉じる
    166 lRet = objAcroApp.Hide
    167 lRet = objAcroApp.Exit
    168
    169 'オブジェクトを強制解放する
    170 Set objAcroPDTextSelectCheck = Nothing
    171 Set objAcroPDTextSelect = Nothing
    172 Set objAcroPDPage = Nothing
    173 Set objAcroPDDoc = Nothing
    174 Set objAcroAVDoc = Nothing
    175 Set objAcroApp = Nothing
    176
    177 MsgBox "処理が完了しました"
    178
    179 Exit Sub
    180
    181 ErrorHandler:
    182 MsgBox "エラーが発生しました"
    183 End Sub
    184
    185 Function createarray(objAcroPDTextSelect As AcroPDTextSelect) As Long()
    186 Dim lCnt As Long
    187 Dim lSumLen As Long
    188 Dim lRet() As Long
    189
    190 lSumLen = 0
    191 '抽出した文字列の数(Index)を取得する
    192 lCnt = objAcroPDTextSelect.GetNumText()
    193 For i = 1 To lCnt
    194 strText = objAcroPDTextSelect.GetText(i - 1)
    195 lLen = Len(strText)
    196 For j = 1 To lLen
    197 ReDim Preserve lRet(j + lSumLen)
    198 lRet(j + lSumLen) = i
    199 Next j
    200 lSumLen = lSumLen + lLen
    201 Next i
    202 createarray = lRet
    203 End Function
    204
    205 Function RepCRLF(s As String, rep As String) As String
    206
    207 Dim a As String
    208 Dim i As Long
    209 Dim j As Long
    210
    211 a = s
    212 j = Len(rep)
    213 i = 1 - j
    214 Do
    215 i = InStr(i + j, a, vbCrLf)
    216 If i > 0 Then a = Left(a, i - 1) & rep & Right(a, Len(a) - i - 1)
    217 Loop Until i = 0
    218
    219 RepCRLF = a
    220
    221 End Function

  14. H2Oさんへ。
    お返事、ありがたいです。

    ※コメント本文は段付き状態ですが表示時に前のスペースが強制的に取られます。(汗

    >・・これのはっきりした原因はよくわからないのです。

    その出来ない原因は全テキスト抽出した時の並びが見た目と違うからです。
    通常は上から順番(ヘッダー+本文+フッター)にテキストが抽出されますが、
    PDFページの作り方?によっては、フッター+ヘッダー+本文の順で
    抽出されます。※過去の記憶
    だからRectでの位置がズレる。

    この現象に置ける規則性を見つけることが出来ませんでした。

    もう少し時間が出来たら、行方不明になった1年以上も前のロジックを探して、H2Oさんのロジックを付け足して、再度作ってみたいと思います。

    貴重なお時間と情報の提供をお礼申し上げます。m(_._)m

  15. はじめまして

    私も下記問題で悩んでいます。

    ズーム値とずれ量が線形の相関をもっているところまではわかりましたが、
    h方向とv方向のどちらにずれるかが、ファイルによってまちまちで困ります。

    >だからRectでの位置がズレる。
    >この現象に置ける規則性を見つけることが出来ませんでした。

    ⇒その後、何か解決策はみつかりましたでしょうか?
    何かアドバイスをいただけると助かります。

  16. kopa さん。
    はじめまして。

    残念ですが、この問題の進展は有りません。
    PDFファイルの内部構造を読めば判るかもしれませんが、データ部分はバイナリーになっている事が多いので、これも何か特殊なツールが必要になります。
    現在ではH2Oさんのコメントが一番ベストに近いものと考えています。

  17. こちらのサイトには大変お世話になっています。
    お礼がてら、私の方で気づいたことを報告します。
    GetSubtypeが"FreeText"だと、テキストボックスになるようです。
    弊社ではPDFにテキストボックスを多用しており、その内容をVBAで読みたかったのですが、なんとか成功しました。

  18. すいまーひろ さん
    はじめまして

    情報提供ありがとうございます。
    バージョンによってタイプの追加があったのかもしれません。
    後日、検証させて頂きます。

コメントを残す

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

CAPTCHA



SAMURAI Plugin

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

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



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

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