リンクをクリップボードにコピー
コピー完了
早速ですが、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
長文失礼しました。
どうぞよろしくお願いします。
何か追加しますか?