先週、とある方より問い合わせがありました。内容は「XORでPDFを比較しようとするとテキストのフォントが変わってしまう」というものです。
当該のPDFは社外秘ということでご提供いただけなかったものの、何度かやりとりをしたところ、Windows環境における帳票システムから出力されたPDF内のMSゴシックのテキストがXOR上で変化することが解りました。とはいえMSゴシックはどのWindows環境にも載っているので、フォントが変わるというよりは、文字間隔や改行位置が出力前の状態とは違うのでしょう。
ならば思い当たるのはPDF内にフォントデータが埋め込まれていない可能性です。Adobe InDesignやQuark XPressのようなDTPアプリから出力されたPDFなら必ずフォントデータが埋め込まれます。商用の印刷物・表示物はどの環境でも等しく表示されなければならないので。
でも、例えばWordの文書にはそのような前提がなく、フォントデータを埋め込むには意図的に設定しなければなりません。
それによりファイル容量は大きくなるものの、どの環境でもフォントが固定されます。
ならば、おそらくその帳票システムでも同様ではないかと。「PDFにフォントを埋め込む」の設定項目が用意されていれば、この問題は解決できるかもしれません。
そもそもXORはDTPで使うPDFの比較用途を想定して開発したのでフォントデータが埋め込まれているPDFどうしの比較が前提です。このような問題が起こるとは盲点でした。
残念ながらフォントが埋め込まれていないPDFに対して、XOR側で元の表示状態を再現することはできなさそうです。やはり比較したいPDFにはフォントデータを埋め込んでいただく必要があります。