コンテンツにスキップ

pdfl pixelcompare --viewer の使い方

レポートは「3 ページ目が 0.04% 変わった」と告げます。それがはぐれたハイフンなのか、 誤った価格なのかは告げません。それを知るには見るしかなく、--viewer が見るための 道具です。

Terminal window
pdfl pixelcompare cf_a.pdf cf_b.pdf --viewer pixelcompare/

フォルダーが書き出されます。1 ページにつき 3 枚の PNG と、index.html が 1 つ。 サーバーも CDN もインストールも要りません。ファイルを開くだけです。フォルダーを 圧縮すれば、刷り直しを承認する人も、何も入っていない機械で開けます。

286 ページ中 3 ページ目を開いたビューアー。三つのペインが横に並び、上部にページ一覧、三つを貫く切れ目の棒

三つのペインが、つねに同じページを映します。

ペイン 中身
Original 一つ目のファイルのページ、手を加えないまま
New 二つ目のファイルのページ、手を加えないまま
Difference 両方に、変わったところを塗り重ねたもの

最上段は要約です。どのファイルを比べたか、100 of 286 page(s) differ · worst 0.11%、そして開いているページについて page 3 · 0.04% of pixels differ。

縦一本と横一本の棒が、三つのペインの同じ位置を貫き、三つで同時に動きます。棒は ポインターに従います。つかむものも狙う場所もなく、交点はマウスのあるところです。

Difference では棒が切れ目になります。縦棒の右と横棒の下に新しいファイルが、 それ以外に元のファイルが出ます。放っておけば横棒は上端にあり、その状態では縦棒が そのまま全高の切れ目になります。追いかけているものが列ではなく帯にあるときは、横棒 を下げてください。

Original と New では同じ棒が定規になり、ページの同じ桁と同じ行を指します。 だから切れ目が見せているものを、手を加えていないどちらのページの上でも、目分量で 測らずに見つけられます。

どちらの位置もペインではなくページに対する百分率なので、ページを変えても、窓の大き さを変えても保たれます。

どのペインの上でも差分はその場に塗られ、色が種類を示します。

色 意味
赤 新しいファイルで失われたインキ
緑 新しいファイルで増えたインキ
青 同じ濃さで、色が違う

286 ページの文書の 3 ページ目で、1 文字だけ変わるとこう見えます。

差分ペインの拡大。outubro という語が outubrb に変わった箇所に赤と緑が重なっている

outubro が outubrb になりました。赤が去った文字、緑が来た文字です。ページの他 には何も動いておらず、二つの窓を並べてスクロールした人はそのまま読み飛ばしたはず です。

上部の一覧がページで、それぞれにどれだけ異なるかが付いています。

ビューアーは差分のあるページから開きます。 この文書では 286 ページ中 100 ページ。All で残りの 186 が戻ります。矢印と ← → はこの絞り込みに従い、 隠れているページに止まらず飛び越えます。変化のないページを見ているときに絞り込みへ 切り替えると、最も近い変化したページへ移ります。

どこも違わないときは、ボタンがそう表示して無効のままになります。一覧を空になるまで 絞り込んだりはしません。

ホイールで最大 8 倍まで拡大でき、三つのペインがポインターの下の点を中心に一緒に 動きます。見ていたものがその場に留まるということです。縮小はページ全体で止まります。 ペインはもともとページ全体が収まる大きさで、それより下に有用なものはないからです。

どちらのマウスボタンでも押したまま動かすと、ページ自体を、これも三つ同時に、 どの倍率でもポインターと同じ速さで動かせます。拡大したあとで隅に届く方法です。 ドラッグ中も棒はポインターに従い、どの倍率でも太さを保ちます。

Reset view は拡大も移動も棒も出発点に戻します。戻すものがない間は無効です。

別のページへ移ると、またページ全体から始まります。拡大と移動は設定したページに属す るもので、持ち越せば次のページのたまたま何かある場所に着地してしまいます。

ビューアーは比較が見つけたものを映すので、比較を変えるフラグが、見えるものを変えます。

Terminal window
# より細かく見る。既定は 150 dpi、300 は多く見えて時間もかかる
pdfl pixelcompare a.pdf b.pdf --viewer diff/ --dpi 300
# 面積の 0.1% 未満しか変わっていないページは無視する
pdfl pixelcompare a.pdf b.pdf --viewer diff/ --max-diff 0.1
# 文書の一部だけ
pdfl pixelcompare a.pdf b.pdf --viewer diff/ --pages 1-10,42
# 比較の前に描画のノイズを吸収する
pdfl pixelcompare a.pdf b.pdf --viewer diff/ --threshold 0.1 --blur 1

もう一つ理解しておく価値があります。同じ原稿から書き出し直したファイルはしばしば 1、2 ピクセルずれて着地し、それを補正しなければ文字の輪郭すべてが差分になります。 そこで比較はページ全体の単一のずれを探し、見つけたときには伝えます。

page 3: 2.10% of the pixels differ, in 44 area(s) (aligned by 2, -1 px)

位置そのものを確かめたいときは --no-align で切ってください。

CLI の章にすべてのオプションと、進捗表示と、速度についての記述が あります。このブログには誤ったファイルが機械に乗ったあとの代償 と、代わりに compare を使う場面の記事もあります。

DigitalOceanこのサイトのホスティングを提供してくださる DigitalOcean に感謝します。