• 締切済み

VBAでAcrobatを操作してテキスト抽出で詰まっています。

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で同様なことをされている方がいましたらぜひよろしくお願いします。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 >VBAで同様なことをされている方がいましたらぜひよろしくお願いします。 ふつうは、pdf に、テキストが入っているとは限らないし、プロテクトが掛かっていたら出来ませんので、印刷プロテクトが入っていないものなら、私は、OCR で取ってしまいます。それに、小さい規模なら、テキストが入っていれば、テキスト・コピーが利きます。 Acrobat 自体は分かりませんが、 test = jso.getPageNthWordQuads(0, 1) もし、もともとが、配列があるとするなら、インデックス(添え字)を入れなければ、そのまま入るはずです。ただし、変数 test は、Variant 型で、配列の宣言をしないことが条件です。 そういうことではなくて、それぞれを取りたいなら、 jso.getPageNthWordQuads が、8つがどのような構造をしているかは分かりませんが、 座標は、二次限配列なのですから、 getPageNthWordQuads ([nPage],[nWord]) そのそれぞれのインデックスに、たぶん、0か、1 から、上限まで数字を入れれば出てくるはずです。

tplgy
質問者

お礼

ご回答ありがとうございます。 市販のリッチテキストコンバータでPDFをEXCELファイル化して使用していたのですが、どうしてもかゆいところに手が届かず作ることにしました。 test(0,0)を参照しようとしてもインデックスが対象外と言われてお手上げでしたが、 >座標は、二次限配列なのですから、 というアドバイスでもう一度調べてみたらどうやら2次元配列ではなくてジャグ配列ではないかと思いtest(0)(0)を参照してみたら無事参照することができました。 解決のご報告とあわせてお礼申し上げます。 ありがとうございました!

すると、全ての回答が全文表示されます。

関連するQ&A