終了

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

New Here ,
Feb 08, 2017 Feb 08, 2017

リンクをクリップボードにコピー

コピー完了

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

長文失礼しました。

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

表示

3.4K

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
no replies

何か追加しますか?

会話に参加する