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ファイルに保存し、テキストを英語表記でする、といった利用方法になるかと思われます。