高見知英の技術ログ

技術関係のログをQiitaから移行してきました。プログラミングのほか、使っているアプリの細かい仕様についてなど書いていきます。

プルリクエストがマージされた話し

さてなんとなく他の方の記事を読んで「そういえば書いてないな」と思ったので。

neko314.hatenablog.com

元記事ほど大きなプロダクトではないですが、こちらでもPyPDF3に行なったプルリクエストがマージされました。

github.com

問題概要

内容は「PyPDF3*1で古いPDFを読むと、書き込み時に埋め込みフォントの情報が壊れる」というものです。

Shift-JISでフォント名が埋め込まれている非常に古いPDFを読み込んだときのみ発生する問題 ということで非常にレアなものですが、仕事で非常に古いPDFを読まなければいけなくなってしまい、やむなく・・・。

そもそもPDFにShift-JISでフォント名を埋め込む と言うこと自体が最近のPDFではあり得ない挙動のため、PdfFileReaderのコンストラクタ引数strictFalseを指定したときのみ、今回の動作を行なうようにしました。

まあ、結果こういう体験ができたわけで、古いPDFの存在にも多少は感謝しなければいけないのかもしれません。多少は。

テストも書いた

ちょうど良く現象を再現できるテストコードが作れたので、テストコードも書きました。

サンプルファイルは今からPDFを作るとどうやっても事象を再現できないため(Shift-JISでフォント名を書き込む ということができないため)、昔々開催していたスマートフォン懇親会の式次第チェックリストを使っています。

github.com

というかtempfileなんていうモジュールあったんですね。

一次出力ファイルの中身を確認することが困難になるため試行錯誤の多いテストケースではあまり使えませんが、まあ今回はそれほど試行錯誤するわけじゃないのでいいかなあ と。

英語を書いた

そして英語圏のプロダクトなので、もちろんプルリクエストも英語です。最近英語圏の企業さんやフォーラムに向けた英文を書く機会が増えてきました。

このあたりは表のブログにも書きましたが、慣れればわりと気軽に英文は送れます。多少面倒くさいですが、送れるには送れる。

blog.onpu-tamago.net

とくにShift-JISに起因する今回のような問題は海外の環境では再現しない(というか、そんなコンテンツがない)問題なので、どんどん問題挙げていくと自分のためにもちょうど良いかもよ と思った次第。

*1:2も4も5も同じ症状が出るのですが、いちおう今のところ一番活発そうなブランチが3だったので…