さてなんとなく他の方の記事を読んで「そういえば書いてないな」と思ったので。
元記事ほど大きなプロダクトではないですが、こちらでもPyPDF3に行なったプルリクエストがマージされました。
問題概要
内容は「PyPDF3*1で古いPDFを読むと、書き込み時に埋め込みフォントの情報が壊れる」というものです。
Shift-JISでフォント名が埋め込まれている非常に古いPDFを読み込んだときのみ発生する問題 ということで非常にレアなものですが、仕事で非常に古いPDFを読まなければいけなくなってしまい、やむなく・・・。
そもそもPDFにShift-JISでフォント名を埋め込む と言うこと自体が最近のPDFではあり得ない挙動のため、PdfFileReader
のコンストラクタ引数strict
にFalse
を指定したときのみ、今回の動作を行なうようにしました。
まあ、結果こういう体験ができたわけで、古いPDFの存在にも多少は感謝しなければいけないのかもしれません。多少は。
テストも書いた
ちょうど良く現象を再現できるテストコードが作れたので、テストコードも書きました。
サンプルファイルは今からPDFを作るとどうやっても事象を再現できないため(Shift-JISでフォント名を書き込む ということができないため)、昔々開催していたスマートフォン懇親会の式次第チェックリストを使っています。
というかtempfileなんていうモジュールあったんですね。
一次出力ファイルの中身を確認することが困難になるため試行錯誤の多いテストケースではあまり使えませんが、まあ今回はそれほど試行錯誤するわけじゃないのでいいかなあ と。
英語を書いた
そして英語圏のプロダクトなので、もちろんプルリクエストも英語です。最近英語圏の企業さんやフォーラムに向けた英文を書く機会が増えてきました。
このあたりは表のブログにも書きましたが、慣れればわりと気軽に英文は送れます。多少面倒くさいですが、送れるには送れる。
とくにShift-JISに起因する今回のような問題は海外の環境では再現しない(というか、そんなコンテンツがない)問題なので、どんどん問題挙げていくと自分のためにもちょうど良いかもよ と思った次第。
*1:2も4も5も同じ症状が出るのですが、いちおう今のところ一番活発そうなブランチが3だったので…