El método más simple e inmediatamente disponible para hacer esto: use ImageMagick's compare
(que también está disponible en Windows).
Incluso puede comparar las páginas en PDF (aunque utiliza Ghostscript como su delegado para hacer que las páginas PDF a píxel imágenes en primer lugar):
compare.exe ^
tested.pdf[0] ^
reference.pdf[0]^
-compose src ^
delta.pdf
El resultado delta.pdf
representará cada píxel tan rojo que tiene una color diferente entre las dos páginas PDF comparadas. Todos los píxeles idénticos serán puramente blancos. El [0]
indica compare
para usar las primeras páginas de cada archivo para comparar (el recuento de páginas se basa en cero).
Se puede ver cómo esto se resuelve con el siguiente ejemplo:
compare.exe ^
http://qtrac.eu/boson1.pdf[1]^
http://qtrac.eu/boson2.pdf[1]^
-compose src ^
delta.pdf
Estas son las páginas respectivas (convertidos a archivos PNG a escala reducida para la visualización web). La página de referencia está a la izquierda, la página modificada es el del medio, el 'delta-pixel-are-roja' imagen está a la derecha:
Un poco diferente resultado visual puede obtener omitiendo el parámetro -compose src
. Luego le ponen píxeles del archivo original como un fondo sombreado en gris (por contexto) con los píxeles delta en rojo:
compare.exe ^
http://qtrac.eu/boson1.pdf[1]^
http://qtrac.eu/boson2.pdf[1]^
delta.pdf
Si no te gusta el color rojo el color de las diferencias de píxeles, utilice -highlight-color
:
compare.exe ^
http://qtrac.eu/boson1.pdf[1]^
http://qtrac.eu/boson2.pdf[1]^
-highlight-color green ^
delta.pdf
La resolución predeterminada que sirve para hacer las páginas PDF es de 72 dpi.En caso de necesitar una mayor precisión, se puede cambiar a 300 dpi con el parámetro -density
así:
compare.exe ^
-density 300 ^
http://qtrac.eu/boson1.pdf[1]^
http://qtrac.eu/boson2.pdf[1]^
delta.pdf
Nota, conmutación a densidades más altas se ralentizará el proceso y crear archivos más grandes.
Puede incluso crear un archivo .txt * la imagen delta que describe las coordenadas de cada píxel y los respectivos valores de color para:
compare ^
http://qtrac.eu/boson1.pdf[1]^
http://qtrac.eu/boson2.pdf[1]^
-compose src ^
-highlight-color black ^
delta.txt
Después, simplemente contar el número total de píxeles vs negro (lo siento, este es Unix/Linux/MacOSX sintaxis):
total_pixels=$(($(cat delta.txt | wc -l) - 1))
black_pixels=$(($(grep black delta.txt | wc -l) -1))
En el ejemplo utilizado para las ilustraciones anteriores, me sale
total_pixels=500990
black_pixels=8727
Por supuesto el resultado 'ideal' sería
black_pixels=0
Interesante pregunta. No estoy seguro de cuánto tiene que ver esto con los informes, SSRS o Jasper. Puede obtener una mejor respuesta reemplazando esas etiquetas con otras y actualizando el título para reflejar que desea hacer una "diferencia visual de PDF". – Jeroen
¿A quién se le ocurrió eso como un requisito y cuál fue la justificación del negocio? Extraiga cada página como un mapa de bits, compare por píxel. ¿Están en blanco y negro? –
Ver [¿Herramienta para comparar grandes cantidades de archivos PDF?] (Http://stackoverflow.com/q/145657) –