Zephyrnet-logo

PDF's visueel vergelijken

Datum:

Soms lijkt een probleem moeilijk, maar het juiste inzicht kan het gemakkelijk maken. Als je zou worden gevraagd een programma te schrijven om twee PDF-bestanden te vergelijken en de verschillen te laten zien, hoe moeilijk zou dat dan zijn? Als je [serhack] bent, red je het veel makkelijker dan je zou denken.

Natuurlijk hangt het maken van iets eenvoudigs soms af van het maken van vereenvoudigende aannames. Als je een "diff-achtig" hulpprogramma verwacht dat invoegingen en verwijderingen laat zien, is dat niet wat hier aan de hand is. In plaats daarvan ziet u een afbeelding van de PDF met wijzigingen gemarkeerd met een rood vak. Dit is gemakkelijk omdat het programma beschikbare hulpprogramma's gebruikt om de PDF's als afbeeldingen weer te geven en vervolgens eenvoudig pixels in de resulterende afbeeldingen vergelijkt, waarbij rode kaders worden getekend over de delen die niet overeenkomen.

Vanzelfsprekend is dit het beste voor PDF's die slechts een paar wijzigingen hebben. Als u bijvoorbeeld een alinea invoegt, wordt de uitvoer behoorlijk nutteloos. Daarvoor zou je kunnen overwegen om de tekst uit de PDF te extraheren met zoiets als pdf2text (die dezelfde onderliggende bibliotheek gebruikt die deze gebruikt om afbeeldingen te genereren).

Het programma toont veel berichten over ontbrekende bestanden, maar lijkt het werk toch te doen. Hier is het resultaat van het vergelijken van twee versies van de Hackaday-startpagina die een paar minuten na elkaar in PDF zijn vastgelegd:

Je kunt echter zien dat als er een nieuw artikel zou worden gepost en alles met één naar beneden zou schuiven, je niets anders zou hebben dan een gigantisch rood blok.

Het blijft een slim idee. Er zijn verrassend weinig tools hiervoor, hoewel we dat wel deden zoek een paar anderen. Er zijn er natuurlijk genoeg Linux-tools voor het manipuleren van PDF's. Velen van hen zijn mashups van andere tools zoals deze is.

spot_img

Laatste intelligentie

spot_img

Chat met ons

Hallo daar! Hoe kan ik u helpen?