環境
Ruby3.3
Windows10
はじめに
win32oleを使ってExcelファイルをPDFに出力したところ、PDFファイルを開くとプロパティの値がおかしくなっていました。PDFファイルのプロパティ値を正しく修正するためのトラブルシュート記事です。
そもそも、PDFファイルのプロパティ値は出力元のExcelファイルのメタデータがそのまま引用されます。PDFファイルを作成する直前にExcelファイルのメタデータを強制的にいじる方法もありますが、PDFファイルを作成した後に、PDFファイルを編集することもできます。
Excelファイルからメタデータを拾う場合はwin32oleで対応できますが、PDFファイルを編集する場合は、別途PDF系のgemを使う必要があります。
内容
win32oleを使ってExcelファイルから出力したPDFファイルのプロパティ値を表示するとこのようになっていました。
タイトルに出力元のExcelファイル名が表示されています。しかも、日本語部分が文字化けしています。更に作成者が0となっており、折角なのでこちらも編集しておきます。
PDFファイルを編集するgemにhexapdfを使いました。
https://rubygems.org/gems/hexapdf
作成したコードはこちらです。
単純にPDFファイルをオープンして、任意の内容に編集してライトをするだけです。
def changepdf(file)
require 'hexapdf'
path = "D:\\hoge\\#{file}.pdf"
doc = HexaPDF::Document.open(path)
doc.trailer[:Info][:Title] = "#{file}"
doc.trailer[:Info][:Author] = "テストユーザー"
doc.write(path, optimize: true)
end
changepdf("請求書")
編集後のプロパティ値です。このようにタイトルにはPDFのファイル名、作成者は任意の名前で編集することができました。