スポンサーリンク
概要
ISBN Book Titler Ver0.20でPDFファイルのタイトルや著者等のメタ情報を編集可能にした際に苦労したのでその際の情報を共有します。
スポンサーリンク
内容
PDFファイルのメタ情報を編集するためにPDFSharpといったOSSライブラリを利用しました。
以下のようにPDFを読み込んでプロパティを編集するだけで簡単にメタ情報を編集できるので楽ちん。という事で採用しました。
スポンサーリンク
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
class Program { static void Main(string[] args) { var pdfPath = @"C:\hoge.pdf"; var doc = PdfReader.Open(pdfPath, PdfDocumentOpenMode.Modify); //メタ情報を編集 doc.Info.Title = "たいとる"; doc.Info.Author = "作者"; doc.Save(pdfPath); } } |
しかしながら、いざ利用すると日本語やひらがななどの2バイト文字などを設定すると、文字化けしてしまう事が発覚。
(2017/9/1日における最新バージョン 1.32.2602利用時)
文字コードの設定などが無いか探してみましたが、見つからず。
他のOSSライブラリなどの利用なども検討しましたが、ライセンスが厳しいものが多く、
exiftoolなどのコマンドラインツールを呼ぶ方向に変更しようと思いましたが、
公式のフォーラムで似たような症状で文字化けするといった問題が挙がっており、そこに載っている以下のようなメソッドでエンコードし直すことで解決できました。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
private static string EncodingHack(string str) { var encoding = Encoding.BigEndianUnicode; var bytes = encoding.GetBytes(str); var sb = new StringBuilder(); sb.Append((char)254); sb.Append((char)255); for (int i = 0; i < bytes.Length; ++i) { sb.Append((char)bytes[i]); } return sb.ToString(); } |
見たところ先頭にBOMを挿入しているように思えます。
参考
http://forum.pdfsharp.net/viewtopic.php?p=9523#p9523
v1.50 beta版で対策を行っているようなので将来は治っているかもしれません。
ご参考程度にどうぞ。