Comparação Pixel a Pixel com PDFLang
Um fornecedor manda o arquivo corrigido. O trabalho já está na programação, a máquina está reservada, e alguém precisa responder uma pergunta antes de entrar: este é o documento que foi aprovado, com a correção dentro — ou é outra coisa?
Essa pergunta é respondida no olho com mais frequência do que se gostaria de admitir. Duas janelas lado a lado, ou duas provas na mesa de luz, e uma pessoa rolando a tela. É a parte mais lenta do dia e a menos confiável.
O que o arquivo errado custa
Seção intitulada “O que o arquivo errado custa”No momento em que um arquivo errado entra na máquina, tudo que vem depois é perda. O papel foi usado. A tinta foi usada. As chapas foram gravadas para aquele arquivo. O tempo de máquina foi reservado e queimado, e o das pessoas que a operam também. Se chegou ao corte, à dobra ou ao acabamento, isso também se foi. Se chegou a expedir, tem frete — duas vezes, porque precisa voltar.
Depois o trabalho inteiro roda de novo, com o custo cheio, tendo já gasto o orçamento uma vez.
E o prazo é a parte que não volta. Um catálogo que perde a estação, uma promoção que chega depois da data impressa nela, uma revista que sai uma semana atrasada: reimprimir conserta o objeto, não o momento para o qual ele existia.
Parte disso nem é dinheiro. Uma bula com o texto de advertência errado, uma publicação legal com o número errado, um documento financeiro com o dado do trimestre passado — esses não são erros caros, são o tipo de erro que termina em recall ou em órgão regulador.
Contra tudo isso, a conferência custa segundos.
Por que o olho é o instrumento errado
Seção intitulada “Por que o olho é o instrumento errado”A atenção humana é ótima para achar uma diferença grande e péssima para achar uma diferença pequena e constante. Coloque duas páginas quase idênticas na frente de alguém e a pessoa acha o parágrafo que foi reescrito. Ela não acha o logotipo que andou dois milímetros.
E piora com o volume. Ninguém olha a página 180 como olhou a página 3. A concentração que pega as coisas se gasta no começo, e o último terço de um documento longo recebe uma passada de olho, não uma conferência.
Além disso, o resultado não se repete. Duas pessoas comparando o mesmo par de arquivos vão relatar coisas diferentes. A mesma pessoa, numa outra tarde, relata coisas diferentes de novo. E quando isso importa depois — quando alguém pergunta quem aprovou e com base em quê — não há o que mostrar.
O que uma máquina entende por “igual”
Seção intitulada “O que uma máquina entende por “igual””O pdfl pixelcompare renderiza os dois arquivos e compara com o que eles
parecem, página por página:
pdfl pixelcompare aprovado.pdf reimpressao.pdfEle reporta uma ocorrência por página que mudou, com quanto da página está envolvido e em quantos lugares separados isso acontece:
page 7: 0.51% of the pixels differ, in 29 area(s)Essa é uma pergunta diferente da que o pdfl compare responde. Aquele comando
olha o texto e a estrutura. Este olha a aparência, e os dois discordam com
mais frequência do que se imagina.
Um logotipo deslocado dois milímetros. Um fio de cabelo que sumiu. Uma cor especial trocada por uma composição em CMYK. Nos três casos o texto é idêntico, então uma comparação de texto diz que os arquivos batem. Eles não batem no papel, que é onde conta.
Uma página que existe num arquivo e não no outro vira uma ocorrência à parte, já que não há contra o que compará-la.
O pixel ou dois que não são mudança
Seção intitulada “O pixel ou dois que não são mudança”Um arquivo exportado de novo a partir da mesma origem costuma cair um ou dois pixels fora do lugar. Se isso fosse tratado como diferença, toda letra da página seria “diferente” e a única coisa que de fato mudou ficaria enterrada no ruído.
Então a comparação procura um deslocamento único na página inteira, e avisa quando encontra:
page 3: 2.10% of the pixels differ, in 44 area(s) (aligned by 2, -1 px)Quando a posição é o que você está conferindo — um elemento que precisa
estar num lugar exato — o --no-align desliga isso.
Um lugar para de fato olhar
Seção intitulada “Um lugar para de fato olhar”Uma porcentagem diz que a página mudou. Ela não diz se a mudança é aceitável. Para isso alguém precisa ver:
pdfl pixelcompare aprovado.pdf reimpressao.pdf --viewer diff/Isso grava uma pasta com as páginas, as diferenças e um index.html. Sem
servidor, sem internet, sem nada para instalar. Abra o arquivo, ou zipe a
pasta e mande para quem precisa liberar a reimpressão.
Ele mostra três painéis lado a lado, sempre na mesma página: o original, o arquivo novo, e os dois juntos com as diferenças pintadas por cima.
Atravessando os três, um par de barras, uma em pé e uma deitada, no mesmo lugar em cada um. Elas seguem o ponteiro — não há o que agarrar nem onde mirar. No painel de diferença as barras cortam: o arquivo novo aparece à direita da barra em pé e abaixo da deitada, e o original em todo o resto. Nos outros dois painéis as mesmas barras são réguas, marcando a mesma coluna e a mesma linha da página, então o que o corte revela pode ser localizado em qualquer um dos originais sem medir no olho.
As diferenças são pintadas por cima da página, e a cor diz de que tipo são:
| Cor | Significado |
|---|---|
| Vermelho | Tinta que sumiu no arquivo novo |
| Verde | Tinta que é nova nele |
| Azul | Mesmo peso, cor diferente |
A roda do mouse dá zoom nos três painéis juntos, até 8×, em torno do ponto sob o ponteiro — então o que você estava olhando continua onde estava. Segurar qualquer um dos botões e mover arrasta a página, de novo nos três ao mesmo tempo, que é como se alcança um canto depois de ampliar. Reset view devolve zoom, deslocamento e barras ao início.
E a parte que mais economiza tempo: ele já abre nas páginas que diferem. Num documento de duzentas páginas em que três mudaram, essas três são o motivo de você ter aberto, e All traz o resto de volta. As setas seguem o filtro, pulando o que está escondido em vez de parar nele.
Virar portão, não opinião
Seção intitulada “Virar portão, não opinião”O código de saída carrega o veredito, então isso pode ficar na frente da
máquina em vez de ao lado dela: 0 quando nenhuma página mudou mais do que
você permitiu, 2 quando alguma mudou, 10 quando um arquivo nem pôde ser
lido.
pdfl pixelcompare aprovado.pdf reimpressao.pdf --max-diff 0.1 --viewer diff/ || { echo "a reimpressão não bate — veja diff/index.html" exit 1}O --max-diff é a tolerância: quanto de uma página pode mudar antes de contar.
O --dpi decide o quão de perto olhar — mais alto enxerga mais e demora mais.
O --threshold e o --blur absorvem o ruído pequeno que a renderização produz.
A conferência roda em segundos, dá a mesma resposta toda vez, e deixa um relatório e um visualizador para trás como registro do que foi comparado.
Onde olhar depois
Seção intitulada “Onde olhar depois”O capítulo do CLI documenta cada opção do pixelcompare,
junto com o compare para a pergunta de texto e estrutura. As
receitas colocam os dois dentro de fluxos completos —
uma gráfica conferindo o arquivo de máquina contra a prova aprovada, uma
editora conferindo uma reimpressão contra a edição que já está nas prateleiras.