SeleniumBasic PdfFileClass PDFの新規作成と加工

リファレンス

PDFの新規作成、加工用クラスを解説します。2023年3月現在、テキスト入力は日本語入力対応が不可です。

オブジェクト設定

・変数宣言

Dim PdfFile As New PdfFile

文法

PdfFile.[メソッド]

メソッド・プロパティ

メソッド

スクロールできます
Name解説ShortExample
AddBookmarkブックマークを追加.AddBookmark "Bookmark"
AddImage現在の位置に画像を追加.AddImage driver.TakeScreenshot
AddLinkリンクを追加.AddLink "https://programan.org/"
AddPage新しいページを追加.AddPage
AddSpace空の高さをミリメートルで追加(インチ、ポイント指定も可).AddSpace 100
AddText現在の位置にテキストを追加.AddText "hogehoge"
AddTextCenter水平方向の中央にテキストを追加.AddTextCenter "いろはにほへと"
AddTitle現在の位置にテキストを追加.AddTitle "Programan"
Disposeリソースを解放.Dispose
SaveAsファイルとして保存.SaveAs "C:\Users\shoji\Desktop\PdfCreateSample.pdf"
SetMarginsページの余白をインチ (in) で設定(ミリ(mm)、ポイント (pt)指定も可).SetMargins 5, 5, 5, 5, "mm"
SetPageSizeページのサイズをインチ (in) で設定(ミリ(mm)、ポイント (pt)指定も可).SetPageSize 215.9, 279.4, "mm"

※Short Exampleは、動作確認ができたコードを記載しています。

Example

Use_PdfFileCls

Private Sub Use_PdfFileCls()
    Dim driver As New ChromeDriver
    driver.Get "https://programan.org"
    
    Dim PdfFile As New PdfFile    
    With PdfFile
    .SetMargins 5, 5, 5, 5, "mm"
    .SetPageSize 215.9, 279.4, "mm"
    .AddText "hogehoge"
    .AddTitle "Programan"
    .AddLink "https://programan.org/"
    .AddText "hoge"
    .AddSpace 100
    .AddText "irohanihoheto"
    .AddTextCenter "いろはにほへと"
    .AddImage driver.TakeScreenshot
    .AddPage
    .AddBookmark "Bookmark"
    .AddPage
    .AddTitle "Add_titile"
    .SaveAs ThisWorkbook.Path & "\PdfCreateSample.pdf"
    .Dispose
    End With
End Sub

日本語テキスト入力不可の検証

 2023年3月現在、SeleniumBasicのPdfFileクラスによるPDFファイル作成では、テキスト入力で日本語入力ができません。日本語は、”?”で表記されてしまいます。解決策が無いか調べてみましたが、現状私の調べた範囲では対処が難しそうです。備忘記録のため、調べた内容を残しておきます。

 2023年1月頃からAdobe Acrobat Readerにて日本語のテキスト入力をしようとした時に、日本語入力ができない報告がネット上で飛び交っていました。PDFファイルをAcrobat Readerで開いて、コメント入力を日本語で入力してみたところ、確かにPC環境によっては日本語入力ができませんでした。(3台中1台で事象発生)
Acrobat Readerで日本語入力ができない場合は、フォントパックがAdobe社からダウンロードできるので、ファイルをインストールしたら日本語入力できる様になりました。

 Acrobat Readerを利用した日本語入力はできる様な対処方法がある様ですが、SeleniumBasic PdfFileクラスは、Acrobat Readerを利用せず、クラス内でPDFファイルを作成します。
 SeleniumBasicのソースコードを見てみると、PDFファイル作成のフォント設定で、"gdi32.dll"を利用していました。ファイル場所は、"C:\Windows\System32\"にあります。当該のDLLファイルにてフォント辞書は、Type1を利用しています。このType1は、Adobe社が2023年1月を以てサポートを終了しています。サポート終了後は、Type 1フォントを使用して作成されたPDFファイルでは、Type 1フォントを利用することができなくなりました。
 PdfFileクラスで作成されたPDFファイルのフォントタイプはType1でした。(PDFファイル、プロパティのフォントタブで確認)PDFファイルにフォントが埋め込まれる様な作り方になっていればやり様があったかもしれないのですが、現状解決策が見つかりませんでした。(調べが足りないかもしれませんが。。)

 SeleniumBasicが更新されることは今後ありそうもないですので、このフォント問題が解決されることは無いかと思われます。PDFの加工、操作等をしたい場合は、有料のAdobe Acrobat StandardやProを利用するのが無難な選択になります。Standard以上を利用すれば、VBAによるPDF操作が可能になり、CUIによるPDFの大量操作も可能になります。PdfFIleクラスを利用する場合は、簡易的にスクリーンショットをPDFファイルに保存し、テキストを英語表記でする、といった利用方法になるかと思われます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

VBAを中心とした自動化、効率化の手法を紹介しています。現在は、SeleniumBasicのexamplesを紹介しています。その内、SeleniumBasic以外の手法も掲載したいと思っております。