1 返信 最新の回答 日時: Jun 16, 2015 2:12 AM ユーザー:べち

    PDFの座標を指定して文字列を読み取りたい

    べち

      はじめまして。


      既存のPDFをオープンし、内容を読み取り追加編集して保存したい事案があります。
      Acrobatを利用してできそうだ、というところまではたどり着けたのですが、
      技術的に可能かどうかよくわからない部分もあり、皆様のお知恵をお貸しください。

       

      C#.Netまたはjava等のプログラムから操作したいと考えています。
      AcrobatSDKを利用して、これらのことはできますでしょうか?


      1) 既存のPDFをオープンし、出力を追加して保存することはできますか?

       

      2) 既存のPDFをオープンし、特定位置の文字列を読み取ることは可能でしょうか?
       印刷物をスキャンしたイメージPDFではなく、プリンタデバイスにPDF出力ドライバ
       を指定した、テキストベースのPDFです。

       

      3) 上記(1)(2)に関し、Acrobatフォームを使用せず、座標を指定する前提です。
        pixcel / inch/ cm等、単位は問いません。

       

      4) 上記(1)(2)に関し、座標指定ではなく、項目位置テンプレートのようなものを
        重ねてPDFをオープンすることは可能でしょうか?
        XMLのような設定ファイル形式でも、独自のファイル形式でも可です。

       

      5) 上記(1)(2)に関し、ページ送り操作を行うことは可能でしょうか。
        たとえば、1ページ目の座標位置(100,50)からの5文字を読込み、
        3ページ目の座標位置(100,200)に加工後の値を出力する、といったようなことです。

       

      6) (1)(2)に関し、サードパーティ製のPDF出力ソフトを用いて出力したPDFでも
        問題ありませんでしょうか。当然、PDF仕様には準拠している前提です。
        問題ない場合、PDF仕様の発行年またはバージョンはわかりますでしょうか。

       

      以上、よろしくお願いします。

        • 1. Re: PDFの座標を指定して文字列を読み取りたい
          べち Level 1

          自己レスです。

          Acrobat名前空間、AFORMAUTLib名前空間のメソッド利用で解決できました。

           

          ◇読取り

          Acrobat.AcroAVDoc.Open(ファイルフルパス).GetPDDoc().CreateTextSelect(ページ, AcroRect型の矩形)

          ・実際にはメソッド呼び出しごとにオブジェクトに格納

          ・読取値はAcroPDTextSelect型、1文字ずつインデックス指定で抜き取り、連結加工する

           

          ◇書込み

          AFORMAUTLib.Fields.Add(...)でフィールドを追加

           

          A4縦の場合は、読取書込みとも、縦長の左下が座標起点。

          A4横の場合は、書込みは横長の左下が座標起点だが、

          読取は90度左に反転させた縦長の左下(文書を横置きにした場合は左上)が座標起点となっていた。

          元ファイルの用紙サイズが自動判定となっていたことによるものかどうかは不明。