TOP > AcroExch.PDTextSelect [...]
一覧
PDTextSelect オブジェクトはPDFドキュメント上にある透明テキスト文字を扱う専用オブジェクトです。
メソッド | 解説 |
---|---|
Destroy | テキスト選択状態を解除する。 |
GetBoundingRect | テキスト選択状態になっている四方位置情報(AcroRectオブジェクト:Top,Bottom,Left,Right)を得ます。 |
GetNumText | PDTextSelectオブジェクト上にあるテキスト選択状態のテキスト要素数を得ます。 |
GetPage | テキスト選択状態になっているページ番号を得ます。 |
GetText | テキストが入った配列からインデックス指定でテキストを得ます。 |
- PDFで文字列を取得する時は、何行目の何文字目とかではなく、基本的にページ全体の位置「Top,Bottom,Left,Right」を指定して、その範囲で手動で選択状態になった形で文字列を配列として取得します。
- 多分、上記解説は難しくて内容が理解出来ないと思います。
サンプルを実行しながら途中経過の動きを見れば分かると思います。
< TOPへ >
はじめまして。
今回、Acrobatのライブラリを使って
PDFファイルのドキュメントをテキスト変換
し、変換したドキュメントの内容をEXCELのシートに貼り付けるのですが、テキスト変換ができません。
PDF⇒テキスト変換は、可能なのでしょうか?
しんさん。初めまして。
レスが遅れて申し訳ありません。
「PDF⇒テキスト変換」は仕様上では上記メソッド「GetText」で可能だろう思われます。その前に該当するページ+箇所の文字列選択メソッドの実行が必要だと思われます。
この手のモノは実際に動作確認をしないと本当に出来るかは分からないので、後日サンプルを掲載してみたいと思います。
しんさん。
当サイトでサンプルを2つ掲載しましたのでご連絡します。ご参考になれば幸いです。
・PDFをテキストファイルに変換する方法(Excel VBAサンプル)
http://pdf-file.jugem.jp/?eid=114
・AcroExch.Rect:Right プロパティ
http://pdf-file.jugem.jp/?eid=118
はじめまして。
本サイトにてVBAでAcrobat操作の勉強をさせて頂いてます。
(かなり助かっています)
すこし、ご教授して頂きたいことがあるのですが、PDFをテキストファイルに変換する方法で、ボールド(太字)や、斜体などの文字列のみを抽出したいと思っています。
このような、特定のフォント書式のみの文字列だけを抽出することは可能なのでしょうか?
haruさん。初めまして。
>・・ボールド(太字)や、斜体などの文字列のみを抽出・・
簡単そうですが、これはかなり難しい質問ですね。
多分、無理だと思います。しかし、少し考えさせて下さい。裏技?も含めて何とか逃げ道を考えたいと思います。
お時間を下さい。
haruさん。前の続きを返答します。
「ボールド(太字)や、斜体などの文字列のみを抽出」は可能です。
やり方です。
1.PDFをHTMにして変換出力する。
「PDFをHTML 3.2形式に変換する方法(Excel VBAサンプル)」
http://pdf-file.jugem.jp/?eid=107 を参照
2.出力したHTMLファイルをVBAで読み込んでHTMLタグ<B>、<U>等をキーにして該当文字列を抽出する。
HTMLに出力する時に事前に不要ページを削除しておくと取り込みやすいかと思います。
返答になりましたでしょうか。
ご回答誠にありがとうございます。
早速、PDFをHTML 3.2形式に変換する方法
を試させて頂きました所、下記箇所でエラーが
出てしまいました。
■エラー箇所
jso.SaveAs ”c:¥test-01.html”, ”com.adobe.acrobat.html-3-20”
■エラー内容
実行時エラー’1001’
NotAllowedError:セキュリティ設定により、このプロパティまたはメソッドへのアクセスは許可されていません。
なお、動作環境は下記の通りです。
・WindowsXP + HomeEdition + SP2
・Acrobat9.0 pro、Office 2003
関係ないかも知れませんが、
PDFファイルの「文章のプロパティ」の
「セキュリティ」タブの「セキュリティ方法(M)」には
セキュリティなし を指定しています。
エラーとなる原因は、何か考えられますでしょうか?
haruさん。初めて見るエラーです。
以下を実行&確認してみてください。
1.保存先をCドライブ以外にする。セキュリティ上でCドライブは何らかの制限があるみたいです。実際にテストしてみましたが、同様なエラーが発生しました。Cドライブ以外は発生しません。
2.確認ですが、Acrobat9.0 proの後にReaderをインストールしていないでしょうか? どんなにAcrobat9.0 proが存在しても後でインストールしたソフトのOLEを使用します。もし後でReaderをインストールするとReaderはファイル保存が出来ないので同様のエラーとなります。
以上、御確認下さい。
できました(^-^)。
ありがとうございます。
制厳があったんですね。
考えもつきませんでした。
また、OLEにもそんな規則?があったんですね(いい情報ありがとうございます)。
すごく助かりました。
本当にありがとうございます。
haruさん。
感謝したいのはこちらです。
「1.」の制限が設けられているとは今まで知りませんでした。(恥
関係箇所のサイトページにはこの情報を昨夜全部付加させて頂きました。
とにかく解決出来て良かったです。
はじめまして。
CreateTextSelectとGetNumTextで指定範囲の文字列を
抽出しようとしています。
文字列中に連続する英数が含まれており、指定範囲内に連続する
英数中の1文字でも含まれている場合に範囲外の文字列も一緒に
抽出されてしまいます。
連続する英数が1つの単語として扱われているのだと思うのですが、
これを完全に1文字単位で処理させることはできないでしょうか?
(例)
-------
あい12|3うABCえお|
-------
欲しい結果は「3うABCえお」なのですが、実際には「123うABCえお」
同じく
-------
あい12|3うABCえお|
-------
結果:123うABCえお
------
あい123|うABCえお|
------
結果:うABCえお
----
あい123うAB|Cえお|
----
結果:ABCえお
matsuさん。初めまして。
ロジックが判らないので、予測で取り急ぎ、お返事をさせて頂きます。
※この部分はかなりややこしくて苦労しましたが詳細な記憶が薄れています。
>連続する英数が1つの単語として扱われているのだと思うのですが、
>これを完全に1文字単位で処理させることはできないでしょうか?
まず、この場合は「連続する英数が1つの単語として扱われ」ません。(タブン
1単語扱いされるのは、頁内のテキストがすべて英文章の場合だけです。
全てが日本語だけだと基本的に一文字が1単語として扱われます。
理由は分からなく、多分ですが2バイト文字(日本語)の区切りをAcrobat OLEが判断できないと予測しています。
これに1バイト文字(英数字)と2バイト文字(日本語)が混ざると結果は予測できません。
しかし、日本語が混ざっているので期待する動きはしないと思います。
よって返答は残念ですが「NO」です。
自分で規則性を見つけて何らかの区切り文字処理ロジックを作成するしか手がないと思われます。
Acrobatのバージョンによっても変わらないでしょう。
ご回答ありがとうございます。
やはり難しそうですね。
その後いろいろ試してみたのですが、仰るとおりAcrobatの
バージョンによっても変わりませんでした。
また、英数部分を全て2バイト文字に変えてみたのですが、
1バイト文字が混在する場合と同じ結果となりました。
さらに、すべて2バイト文字で同じ文字列長のPDFを作成して
選択させてみたのですが、英数を含む場合と含まない場合で
やはり抽出文字数が異なりました。
全て2バイト文字(英数含まない)
-------
あいうえお|かきくけこ|
-------
結果:かきくけこ
全て2バイト文字(英数含む)
-------
あ1234|5678こ|
-------
結果:12345678こ
1バイト,2バイト文字混在
-----
あ1234|5678こ|
-----
結果:12345678こ
私の中では「1バイト文字=英数」(半角カナは置いておくとして)と
単純に考えていたのですが、もしかしたら2バイト文字でも英数と
判断されているような気もします。
とりあえず他の方法も検討してみようと思います。
AcrobatをOLEで制御するにあたり、こちらのサイトは大変勉強に
なっています。ありがとうございました。
matsuさんへ。
こちらの記憶とは異なったみたいですね。
ひょっとしたらPDF内部の文字コードが全てユニコードの2バイト文字になっているのかもしれません。
それならば半角英数字にしても2バイト文字扱いになるのでしょう。
PDFが作成されたAcrobatバージョンによって変わるのかもしれません。
とにかくこの部分は難しいですから、システムで運用する場合は出来るだけ異なったPDFでテストする事が望ましいと思われます。
管理人様
はじめまして。
このサイトのおかげで大変助かっております。
現在、PDFに記載されている内容を読み取り、他のアプリケーションに出力する ということを行いたくAcrobatを使用しvb.netでプログラミングを行っております。
サンプルを参考に、PDFに記載されている内容を読み込むことはできたのですが、その他の情報「文字サイズ」「フォント」「太さ」等の情報の取得方法が分からず行き詰っております。
Hiliteメソッド等で選択状態にした個所の文字情報を取得するやり方等がある場合、ご教授頂けたらと思います。
※HTML等に一度変換し、情報を取得することはできたのですが、別ファイルの変換等は行わず実装したいと思っております。
tatu さん。はじめまして。
返事が大変遅くなり、申し訳ありません。
(まだ、本調子では無いのですが・・・)
>「文字サイズ」「フォント」「太さ」等の情報の取得方法
「選択状態にした個所の文字情報を取得するやり方等」に関するOLE(IAC)は記憶にある限りでは残念ですが無いです。
但し、最近の調査で判ったAFormAutオブジェクトから、Acrobat JavaScriptが実行出来る事が、テストでも確認できました。
(Acrobat JavaScriptは現在勉強中ですが)Acrobat JavaScriptでAcrobatからC言語に近いレベルでPDF等の操作が出来るみたいです。
そこから、ご希望の情報の取得が出来る、かもしれません。
Acrobat JavaScriptは当サイトのTOPページに情報が有るのでご参考にして下さい。
ご希望する返答では無かったですが、
少しでも解決につながれば幸いです。