Skip to main content
forest1305
Participant
February 9, 2017
Question

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

  • February 9, 2017
  • 0 replies
  • 3801 views

早速ですが、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

長文失礼しました。

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

This topic has been closed for replies.