プロが教えるわが家の防犯対策術!

ExcelVBAからAcrobatを立ち上げPDFからテキストと、その座標情報を取得したいと考えております。

http://pdf-file.jugem.jp/
を参考にしてAcrobatを立ち上げJavaでテキストを抽出することはできましたが、その座標情報を得られず困っております。

Dim test As Variant
test = jso.getPageNthWordQuads(0, 1)

でtestには8つの値が配列で入るはずなのですがtest(0)にしか値は入っていません。
この値は妥当な値を得られているのですが、test(1)からは参照できません。

いろいろ調べて、VBAのvariantはVBのそれとは違う・・・のが原因ではというところで行き詰りここに書き込んでみることにしました。

VBAで同様なことをされている方がいましたらぜひよろしくお願いします。

A 回答 (1件)

こんにちは。



>VBAで同様なことをされている方がいましたらぜひよろしくお願いします。
ふつうは、pdf に、テキストが入っているとは限らないし、プロテクトが掛かっていたら出来ませんので、印刷プロテクトが入っていないものなら、私は、OCR で取ってしまいます。それに、小さい規模なら、テキストが入っていれば、テキスト・コピーが利きます。

Acrobat 自体は分かりませんが、

test = jso.getPageNthWordQuads(0, 1)

もし、もともとが、配列があるとするなら、インデックス(添え字)を入れなければ、そのまま入るはずです。ただし、変数 test は、Variant 型で、配列の宣言をしないことが条件です。

そういうことではなくて、それぞれを取りたいなら、

jso.getPageNthWordQuads が、8つがどのような構造をしているかは分かりませんが、

座標は、二次限配列なのですから、

getPageNthWordQuads ([nPage],[nWord])

そのそれぞれのインデックスに、たぶん、0か、1 から、上限まで数字を入れれば出てくるはずです。
    • good
    • 1
この回答へのお礼

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

市販のリッチテキストコンバータでPDFをEXCELファイル化して使用していたのですが、どうしてもかゆいところに手が届かず作ることにしました。

test(0,0)を参照しようとしてもインデックスが対象外と言われてお手上げでしたが、

>座標は、二次限配列なのですから、

というアドバイスでもう一度調べてみたらどうやら2次元配列ではなくてジャグ配列ではないかと思いtest(0)(0)を参照してみたら無事参照することができました。


解決のご報告とあわせてお礼申し上げます。
ありがとうございました!

お礼日時:2008/04/03 01:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!