0 返信 最新の回答 日時: Feb 8, 2017 11:37 PM ユーザー:forest1305

    VBAにてPDF内のすべてのテキストをアウトラインに変換するには?

    forest1305

      早速ですが、ExcelVBAからアクロバットを経由したPDF作成でのコード記述で悩んでおりまして、相談に乗っていただけませんでしょうか。

       

       

      イラストレーターでExcelから出力したPDFを読み込む作業をしているのですが、単純に読み込むとフォントが崩れるため、

      アクロバットを利用して文字のアウトライン化をすることにしました。

      手作業でアウトライン化をするとうまくイラストレーターで読み込めるのですが、

      Excel VBAでやるとアウトライン化ができていない状況で、困っております。

      ご存じの方、ご教示いただけませんでしょうか。

      ExcelシートをPDFに一括変換する必要があり、Excelで実行しております。

       

      【手作業の手順】

      分割・統合のプレビュー画面より、

      [分割・統合の設定] - 「すべてのテキストをアウトラインに変換」にチェックを入れ、

      [PDFに適用] - [文書内のすべてのページ]を選択し、「適用」をクリックする

       

      【VBA化にあたり参照した資料】

      JavaScript™ for Acrobat® API Reference

      http://kb2.adobe.com/jp/cps/511/511727/attachments/511727_js_api_reference.pdf

      P.582

       

      pp = getPrintParams();

      rf = pp.constants.rasterFlagValues;

      pp.rasterFlags |= rf.textToOutline;

      this.print(pp);

       

      ⇒このページより、文字のアウトライン化は「textToOutline」を使用すればよいとわかったのですが、

      VBAに見よう見まねでコードを記述しても、反映されません、、

      どのようにコードを記述すればよいのか、ご存じでしょうか。

       

      【VBA】※実行しても適用されない

      参考にさせていただいたサイト:

      AcroExch.PDDoc: GetJsobject メソッド | PDF

       

      Public Sub SUB_test()

          Dim objAcroApp      As New Acrobat.AcroApp

          Dim objAcroPDDoc    As New Acrobat.AcroPDDoc 'NEWを入れないとエラーになる(理由は不明)

          Dim objAcroAVDoc    As New Acrobat.AcroAVDoc 'NEWを入れないとエラーになる(理由は不明)

          Dim objJso          As Object                   '正式なオブジェクト不明

          Dim objDoc          As Variant                  '正式なオブジェクト不明

          Dim lRet            As Long

          Dim docs     '正式なオブジェクト不明

         

         

          Dim pp              As Variant

          Dim rf              As Variant

         

          Set objAcroAVDoc = objAcroApp.GetActiveDoc

        

         'Acrobatアプリケーションを起動する。

          lRet = objAcroApp.Show

          'PDFファイルを開いて表示する。

          lRet = objAcroAVDoc.Open("C:\変換対象.pdf", "")

          'PDDocオブジェクトを取得する

          Set objAcroPDDoc = objAcroAVDoc.GetPDDoc()

          'JavaScriptオブジェクトを作成する。

          Set objJso = objAcroPDDoc.GetJSObject

       

       

      '<--- 資料を参考に文字のアウトラインを実施 ここから---   

          Set pp = objJso.getprintparams

          Set rf = pp.Constants.rasterflagvalues

          pp.rasterflags = rf.texttooutline

      '    objJso.Print '--- ここでシステムエラー ⇒ printは印刷?いったんコメントアウト

      '<--- 資料を参考に文字のアウトラインを実施 ここまで---   

       

       

          'PDFファイルを変更して閉じます。

          lRet = objAcroAVDoc.Close(True)

       

       

          'Acrobatアプリケーションを終了する。

          lRet = objAcroApp.Hide

          lRet = objAcroApp.Exit

       

       

          'OLEを行うとAcrobatが不安定になるので、一応オブジェクトを強制開放する。

          Set jso = Nothing

          Set objAcroAVDoc = Nothing

          Set objAcroApp = Nothing

         

      End Sub

       

       

      長文失礼しました。

      どうぞよろしくお願いします。