0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PDFの差分を出力するシェルスクリプト

Last updated at Posted at 2024-12-29
A B Diff
a_001.png b_001.png diff_001.png
a_002.png b_002.png diff_002.png
mask.png

pdfdiffというシェルスクリプトを作りました。入力したPDFの各ページを比較し、

  • 追加した箇所を緑色
  • 削除した箇所を赤色
  • その他変更した箇所を黄色

で強調した画像を出力します。それぞれのピクセル数も出力するので、後続の処理でフィルタするとよいでしょう。

マスク画像で特定箇所の変更を無視することも可能です。

LaTeXなどを用いて執筆された、相互参照を多用する大規模な文書では、一部分を変更するだけで文書全体に影響が及ぶ可能性があります。変更箇所がどこか別の箇所から参照されている場合はもちろんのこと、たとえその部分自体に参照がなくても、文章の長さが変われば後続の段落やページ番号がずれ込み、結果的に索引や目次が変化することもあり得ます。LaTeXの典型的な組版フローでは、参照を正しく解決するために文書全体を複数回タイプセットします。このような仕組み上、文書の一部だけを切り出して最終的なレイアウトを反映させることは、原理的に困難といえます。一方、色校修正や増刷修正などのケースでは、修正前後の出力を比較し、差分を明らかにする必要があります。pdfdiffは、そのような場面での利用を目的としたスクリプトです。

callas pdfToolboxの検版機能を拝見し、簡単なものであれば自作できるのではないかと感じて作ってみました。Adobe Acrobatにも比較機能はありますが、自動組版との相性を考えると、コマンドラインで利用しやすい形にまとめるのは有用だと考えています。当初は既存のツール、特にImageMagickのcompareを活用すれば目的を達成できると考えていましたが、まさにこれといえる出力を得ることはできませんでした。

まだまだ改善の余地はあり、使いながら直していくつもりです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?