Il metodo più semplice e immediatamente disponibile per eseguire questa operazione: utilizzare ImageMagick's compare
(disponibile anche su Windows).
Può anche confrontare le pagine PDF (se utilizza Ghostscript come delegato rendere le pagine PDF al pixel immagini prima):
compare.exe ^
tested.pdf[0] ^
reference.pdf[0]^
-compose src ^
delta.pdf
Il risultante delta.pdf
saranno rappresentare ciascun pixel come rosso che ha un colore diverso tra le due pagine PDF confrontate. Tutti i pixel identici saranno puramente bianchi. [0]
indica a compare
di utilizzare le prime pagine di ciascun file per il confronto (il conteggio delle pagine è a base zero).
Si può vedere come questo funziona con il seguente esempio:
compare.exe ^
http://qtrac.eu/boson1.pdf[1]^
http://qtrac.eu/boson2.pdf[1]^
-compose src ^
delta.pdf
Ecco le rispettive pagine (convertiti in PNG in scala ridotta per la visualizzazione web). La pagina di riferimento è a sinistra, la pagina modificata è quello centrale, il 'delta-pixel sono rosso' immagine è a destra:
Un risultato visivo leggermente differente puoi ottenere saltando il parametro -compose src
. Poi si otterrà pixel del file originale come uno sfondo grigio-shading (per contesto) con i pixel delta in rosso:
compare.exe ^
http://qtrac.eu/boson1.pdf[1]^
http://qtrac.eu/boson2.pdf[1]^
delta.pdf
Se non ti piace il rosso colore per le differenze di pixel, utilizzare -highlight-color
:
compare.exe ^
http://qtrac.eu/boson1.pdf[1]^
http://qtrac.eu/boson2.pdf[1]^
-highlight-color green ^
delta.pdf
La risoluzione di default usata per il rendering delle pagine PDF è 72 dpi.Se avete bisogno di una maggiore precisione, è possibile passare a 300 dpi utilizzando il parametro -density
in questo modo:
compare.exe ^
-density 300 ^
http://qtrac.eu/boson1.pdf[1]^
http://qtrac.eu/boson2.pdf[1]^
delta.pdf
nota, commutazione a densità più elevate rallenterà il processo e creare file più grandi.
È anche possibile creare un file * .txt per l'immagine del delta che descrive le coordinate di ogni pixel ed i rispettivi valori di colore:
compare ^
http://qtrac.eu/boson1.pdf[1]^
http://qtrac.eu/boson2.pdf[1]^
-compose src ^
-highlight-color black ^
delta.txt
Poi basta contare il numero di totale vs. nero pixel (scusate, questo è Unix/Linux/MacOSX sintassi):
total_pixels=$(($(cat delta.txt | wc -l) - 1))
black_pixels=$(($(grep black delta.txt | wc -l) -1))
nell'esempio usato per le illustrazioni di cui sopra, ottengo
total_pixels=500990
black_pixels=8727
Naturalmente il risultato e 'ideale' sarebbe
black_pixels=0
Interessante domanda. Non sei sicuro di quanto questo abbia a che fare con i rapporti, SSRS o Jasper. È possibile ottenere una risposta migliore sostituendo tali tag con altri e aggiornando il titolo per riflettere che si desidera eseguire un "diff visivo PDF". – Jeroen
Chi l'ha proposto come requisito e quale era la giustificazione commerciale? Estrai ogni pagina come una bitmap confronta per pixel. Sono in bianco e nero? –
Vedere [Strumento per confrontare un numero elevato di file PDF?] (Http://stackoverflow.com/q/145657) –