Najprostsza, natychmiast dostępna metoda: użyj ImageMagick's compare
(która jest również dostępna w systemie Windows).
Może nawet porównać stron PDF (choć używa Ghostscript jako delegata do renderowania stron PDF do pixel obrazów pierwszy):
compare.exe ^
tested.pdf[0] ^
reference.pdf[0]^
-compose src ^
delta.pdf
Powstały delta.pdf
będzie zobrazowania każdego piksela jako czerwonego, który ma inny kolor między dwiema porównywalnymi stronami w formacie PDF. Wszystkie identyczne piksele będą czysto białe. [0]
mówi compare
o używaniu pierwszych stron każdego pliku do porównania (liczba stron wynosi zero).
Można zobaczyć, jak to działa w następującym przykładzie:
compare.exe ^
http://qtrac.eu/boson1.pdf[1]^
http://qtrac.eu/boson2.pdf[1]^
-compose src ^
delta.pdf
Oto poszczególne strony (w przeliczeniu na skalowane w dół PNG do wyświetlania stron internetowych). Strona odniesienia jest po lewej stronie, zmodyfikowana strona jest środkowym z nich, „delta-pixel-to-czerwonych” obraz jest po prawej stronie:
Nieco inny rezultat wizualny można uzyskać, pomijając parametr -compose src
. Wtedy dostaniesz pikseli oryginalnego pliku jako szaro-szare (dla kontekstu) z delta pikselami w kolorze czerwonym:
compare.exe ^
http://qtrac.eu/boson1.pdf[1]^
http://qtrac.eu/boson2.pdf[1]^
delta.pdf
Jeśli nie podoba czerwona kolor dla różnic pikseli, użyj -highlight-color
:
compare.exe ^
http://qtrac.eu/boson1.pdf[1]^
http://qtrac.eu/boson2.pdf[1]^
-highlight-color green ^
delta.pdf
domyślną rozdzielczość wykorzystywane do renderowania stron PDF jest 72 dpi.Jeśli potrzebujesz większą precyzję, można przełączyć się na 300 dpi przy użyciu parametru -density
tak:
compare.exe ^
-density 300 ^
http://qtrac.eu/boson1.pdf[1]^
http://qtrac.eu/boson2.pdf[1]^
delta.pdf
Uwaga, przełączanie do wyższych gęstościach spowolni ten proces i tworzyć większe pliki.
Można nawet utworzyć plik * .txt dla obrazu trójkąt, który opisuje współrzędne każdego piksela, a odpowiednie wartości kolorów:
compare ^
http://qtrac.eu/boson1.pdf[1]^
http://qtrac.eu/boson2.pdf[1]^
-compose src ^
-highlight-color black ^
delta.txt
Następnie wystarczy policzyć liczbę całkowitych vs. czarne piksele (przepraszam, to jest Unix/Linux/MacOSX składnia):
total_pixels=$(($(cat delta.txt | wc -l) - 1))
black_pixels=$(($(grep black delta.txt | wc -l) -1))
W przykładzie używany do powyższych ilustracjach, mam
total_pixels=500990
black_pixels=8727
Of oczywiście „idealne” wynik byłby
black_pixels=0
Interesujące pytanie. Nie wiesz, ile to ma wspólnego z raportowaniem, SSRS lub Jasperem. Możesz uzyskać lepszą odpowiedź, zamieniając te znaczniki na inne i aktualizując tytuł, aby odzwierciedlić, że chcesz zrobić "wizualną różnicę w formacie PDF". – Jeroen
Kto wymyślił to jako wymaganie i jakie było uzasadnienie biznesowe? Wyodrębnij każdą stronę jako bitmapę, porównując piksele. Czy są czarno-białe? –
Zobacz [Narzędzie do porównywania dużej liczby plików PDF?] (Http://stackoverflow.com/q/145657) –