Einführung

PDF ist der De‑Facto‑Standard für Verträge, Spezifikationen, Berichte und behördliche Einreichungen — und bei mehreren im Umlauf befindlichen Versionen wird das schnelle Nachverfolgen dessen, was sich zwischen zwei Dateien geändert hat, mühsam. Das nebeneinander Scrollen von Dokumenten und das manuelle Annotieren von Unterschieden skaliert nicht, und selbst speziell entwickelte Werkzeuge wie die Vergleichsfunktion von Adobe Acrobat erfordern für jedes Dateipaar manuelle Eingriffe.

GroupDocs.Comparison for .NET ermöglicht es, PDF‑Vergleiche vollständig aus Code heraus auszuführen und exakt zu bestimmen, wie das Ergebnis dargestellt wird. Version 26.4 führte die dedizierte Klasse PdfCompareOptions mit drei Anzeige‑Modi ein:

  1. Inline (Standard) — ein einzelnes zusammengeführtes PDF, bei dem Löschungen und Einfügungen auf denselben Seiten in unterschiedlichen Farben hervorgehoben werden. Dies ist das klassische Verhalten und das am leichtesten zu teilende Ergebnis als eigenständige Datei.
  2. Side‑by‑Side — jede Ergebnis‑Seite zeigt die Quell‑ und Zielseiten nebeneinander, ohne Überlappung des Inhalts. Ideal, wenn sich Dokumente stark unterscheiden und das Mischen von Inhalten auf einer Seite verwirrend wäre.
  3. Interleaved — das Ergebnis enthält abwechselnde Seiten: Ungerade Seiten stammen aus der Quelle (Löschungen hervorgehoben), gerade Seiten aus dem Ziel (Einfügungen hervorgehoben). Änderungen werden als native PDF‑Annotationen dargestellt — ein integrierter PDF‑Objekttyp, der Metadaten wie den Änderungstyp und den Autorennamen trägt. Die meisten PDF‑Viewer (Adobe Acrobat Reader, Foxit usw.) ermöglichen das Öffnen des Annotations‑Panels und das Akzeptieren oder Löschen einzelner Annotationen, wodurch ein leichter Review‑Workflow ohne zusätzliche Software entsteht. Öffnet man diese Datei in einem PDF‑Reader mit „Zweiseiten‑Ansicht“, entsteht ein natürlicher Links‑/Rechts‑Vergleich.

In diesem Artikel gehen wir alle drei Modi mit funktionierenden C#‑Beispielen durch, erkunden PdfCompareOptions und seine Eigenschaften und behandeln kurz, wie dieselbe Aufgabe manuell in Adobe Acrobat erledigt werden kann.


PDFs in Adobe Acrobat vergleichen

Bevor Sie in den programmatischen Ansatz eintauchen, lohnt es sich zu wissen, was Adobe Acrobat Pro von Haus aus bietet. Das integrierte Compare Files‑Werkzeug von Acrobat (zu finden unter Tools → Compare Files) erzeugt einen Side‑by‑Side‑Bericht, der Textänderungen, Bildunterschiede und Formatierungsverschiebungen hervorhebt.

So führen Sie einen Vergleich in Acrobat Pro durch:

  1. Öffnen Sie Acrobat Pro und wählen Sie Tools → Compare Files.
  2. Wählen Sie die Ältere Datei (Quelle) und die Neuere Datei (Ziel).
  3. Klicken Sie auf Compare. Acrobat erzeugt einen interaktiven Vergleichsbericht mit einer Übersichtsseite und Inline‑Änderungsmarkern.

Das funktioniert gut für gelegentliche manuelle Reviews. Das Vergleichswerkzeug von Acrobat hat jedoch erhebliche Einschränkungen, wenn der Vergleich Teil einer automatisierten Pipeline sein muss.

Wenn der Vergleich auf einem Server, innerhalb einer CI/CD‑Pipeline oder als Teil eines benutzerdefinierten Review‑Workflows stattfinden muss, ist eine code‑first‑Bibliothek das richtige Werkzeug.


Voraussetzungen

  • .NET 6.0 oder höher.
  • GroupDocs.Comparison for .NET 26.4 oder höher — Installation via NuGet:
dotnet add package GroupDocs.Comparison
  • Eine Lizenzdatei (GroupDocs.Comparison.lic). Ohne diese läuft die Bibliothek im Evaluierungsmodus mit Wasserzeichen und Seitenzahl‑Begrenzungen. Sie können eine temporary license für Tests anfordern.
  • Zwei PDF‑Dateien zum Vergleichen — wir nennen sie source.pdf und target.pdf. Beispielinhalt:
source.pdf target.pdf

Modus 1: Inline-Vergleich (Standard)

Wann zu verwenden: Sie möchten eine einzelne, eigenständige PDF‑Datei, die jeder öffnen kann und sofort sieht, was sich geändert hat — ohne speziellen Viewer oder ein Zweiseiten‑Layout zu benötigen. Ein typisches Szenario ist das Teilen eines rot markierten Vertragsentwurfs mit einem Gegenüber.

using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;

using (var comparer = new Comparer("source.pdf"))
{
    comparer.Add("target.pdf");

    var options = new PdfCompareOptions
    {
        DisplayMode = PdfCompareOptions.ComparisonDisplayMode.Inline
    };

    comparer.Compare("result_inline.pdf", options);
}

Hinweis: Inline ist der Standardwert von DisplayMode, sodass der obige options‑Block optional ist. Ein einfacher Aufruf comparer.Compare("result_inline.pdf") erzeugt dieselbe Ausgabe.

Ergebnisdokument im Inline‑Modus:

PDF comparison result in Inline mode

Was im Hintergrund passiert:

  • Gelöschter Inhalt aus dem Quell‑Dokument wird in einer Farbe (standardmäßig Rot) hervorgehoben.
  • Eingefügter Inhalt aus dem Ziel‑Dokument wird in einer anderen Farbe (standardmäßig Grün) hervorgehoben.
  • Beide Änderungssätze coexistieren auf denselben Seiten, sodass das Ergebnis kompakt ist, aber bei stark unterschiedlichen Dokumenten überladen wirken kann. Bei umfangreichen Textänderungen können gelöschte und eingefügte Inhalte physisch überlappen — zum Beispiel wird ein ersetzter Absatz über dem Original dargestellt, was ein unlesbares Durcheinander erzeugt. In solchen Fällen ist SideBySide oder Interleaved die bessere Wahl.

Modus 2: Side‑by‑Side-Vergleich

Wann zu verwenden: Die beiden Dokumente unterscheiden sich stark und das Platzieren von Löschungen und Einfügungen auf derselben Seite würde das Ergebnis schwer lesbar machen. Side‑by‑Side hält Quell‑ und Zielinhalt strikt getrennt, sodass jede Seite auf einen Blick gescannt werden kann.

using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;

using (var comparer = new Comparer("source.pdf"))
{
    comparer.Add("target.pdf");

    var options = new PdfCompareOptions
    {
        DisplayMode = PdfCompareOptions.ComparisonDisplayMode.SideBySide
    };

    comparer.Compare("result_side_by_side.pdf", options);
}

Ergebnisdokument im Side‑by‑Side‑Modus:

PDF comparison result in Side-by-Side mode

Was im Hintergrund passiert:

  • Jede Ergebnis‑Seite ist im Grunde eine breite Leinwand, die in zwei Hälften geteilt ist.
  • Die linke Hälfte zeigt die entsprechende Quellseite mit hervorgehobenen Löschungen.
  • Die rechte Hälfte zeigt die Zielseite mit hervorgehobenen Einfügungen.
  • Inhalte der beiden Dokumente überlappen nie, sodass selbst stark bearbeitete Seiten lesbar bleiben.

Modus 3: Interleaved-Vergleich

Wann zu verwenden: Sie möchten Änderungen seitenweise in einem Standard‑PDF‑Reader mit dessen Two Page View (oder „Facing Pages“) prüfen. Jede Quellseite befindet sich links, die entsprechende Zielseite rechts — das physische Layout spiegelt das wider, was Side‑by‑Side auf einer einzigen Leinwand rendert, jedoch bleibt jede Seite in voller Größe erhalten.

using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;

using (var comparer = new Comparer("source.pdf"))
{
    comparer.Add("target.pdf");

    var options = new PdfCompareOptions
    {
        DisplayMode = PdfCompareOptions.ComparisonDisplayMode.Interleaved,
        AnnotationAuthorName = "GroupDocs"
    };

    comparer.Compare("result_interleaved.pdf", options);
}

Ergebnisdokument im Interleaved‑Modus (angezeigt in Two Page View):

PDF comparison result in Interleaved mode viewed in Two Page View

Was im Hintergrund passiert:

  • Das Ergebnis‑Dokument enthält 2 × N Seiten für ein N‑seitiges Quell‑/Ziel‑Paar.
  • Ungerade Seiten (1, 3, 5 …) sind Quellseiten mit hervorgehobenen Löschungen.
  • Gerade Seiten (2, 4, 6 …) sind Zielseiten mit hervorgehobenen Einfügungen.
  • AnnotationAuthorName versieht die während des Vergleichs erzeugten PDF‑Annotationen mit dem Autorennamen — nützlich, wenn das Ergebnis in einen Review‑Workflow fließt, in dem Kommentare mehrerer Autoren unterscheidbar sein müssen.

Tipp: Öffnen Sie das Ergebnis in Adobe Acrobat Reader oder einem anderen Viewer, der View → Page Display → Two Page View unterstützt, um das beabsichtigte Links‑/Rechts‑Layout automatisch zu erhalten.


Vergleich auf einen Seitenbereich beschränken

Alle drei Modi unterstützen die Filterung nach Seitenbereich über die Eigenschaft PagesSetup. Das ist praktisch, wenn nur ein bestimmtes Kapitel oder Abschnitt eines großen Dokuments geändert wurde und Sie den Rest überspringen möchten.

using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;

using (var comparer = new Comparer("source.pdf"))
{
    comparer.Add("target.pdf");

    var options = new PdfCompareOptions
    {
        DisplayMode = PdfCompareOptions.ComparisonDisplayMode.SideBySide,
        PagesSetup = new PagesSetup
        {
            StartPage = 3,
            EndPage = 10
        }
    };

    comparer.Compare("result_pages_3_to_10.pdf", options);
}

Wenn PagesSetup null ist (oder nicht gesetzt), werden alle Seiten verglichen — das gleiche Verhalten wie in früheren Versionen.


PdfCompareOptions erkunden

PdfCompareOptions ist eine PDF‑spezifische Unterklasse von CompareOptions und folgt dem gleichen Muster wie WordCompareOptions, das in Version 26.2 eingeführt wurde. Sie fasst alle ausschließlich für PDF geltenden Einstellungen an einem Ort zusammen, sodass Sie nicht versehentlich Word‑ oder Tabellen‑spezifische Optionen auf einen PDF‑Job anwenden.

Property Type Description
DisplayMode ComparisonDisplayMode Steuert das Layout des Ergebnisses: Inline (Standard), SideBySide oder Interleaved.
PagesSetup PagesSetup Seitenbereich, der verglichen werden soll. Bei null werden alle Seiten verarbeitet.
CompareImagesPdf bool Gibt an, ob eingebettete Bilder in den Vergleich einbezogen werden sollen.
AnnotationAuthorName string Autorname, der auf PDF‑Annotationen gesetzt wird (verwendet im Interleaved‑Modus).
ImagesInheritanceMode enum Steuert, welches Dokument Bilder liefert, wenn der Bildvergleich deaktiviert ist.

Ein vollständig konfiguriertes Beispiel:

var options = new PdfCompareOptions
{
    DisplayMode = PdfCompareOptions.ComparisonDisplayMode.Interleaved,
    CompareImagesPdf = true,
    AnnotationAuthorName = "Review Bot",
    PagesSetup = new PagesSetup { StartPage = 1, EndPage = 5 }
};

Die geerbten Basiseigenschaften von CompareOptionsInsertedItemStyle, DeletedItemStyle, ChangedItemStyle — stehen ebenfalls zur Verfügung, sodass Sie bei Bedarf die Standard‑Highlight‑Farben überschreiben können.


Änderungen programmgesteuert abrufen

Unabhängig vom Anzeige‑Modus können Sie über Comparer.GetChanges() eine strukturierte Liste aller erkannten Unterschiede erhalten. Das ist nützlich, um benutzerdefinierte Berichte zu erstellen, Ergebnisse in ein Review‑System einzuspeisen oder Statistiken über das Ausmaß der Änderungen zu sammeln.

using (var comparer = new Comparer("source.pdf"))
{
    comparer.Add("target.pdf");

    comparer.Compare("result.pdf");

    var changes = comparer.GetChanges(); // returns ChangeInfo[]
    Console.WriteLine($"Total changes detected: {changes.Length}");
}

Siehe die offizielle API‑Referenz für Details: Comparer.GetChanges.


Arbeiten mit passwortgeschützten PDFs

Passwortgeschützte PDFs werden vollständig unterstützt. Übergeben Sie das Passwort via LoadOptions, wenn Sie den Comparer erstellen:

using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;

using (var comparer = new Comparer("source_protected.pdf",
    new LoadOptions { Password = "secret" }))
{
    comparer.Add("target_protected.pdf", new LoadOptions { Password = "secret" });

    var options = new PdfCompareOptions
    {
        DisplayMode = PdfCompareOptions.ComparisonDisplayMode.SideBySide
    };

    comparer.Compare("result_protected.pdf", options);
}

Kostenlose Testversion erhalten

Sie können GroupDocs.Comparison for .NET von der official releases page herunterladen. Für uneingeschränkte Tests können Sie eine temporary license anfordern — keine Kreditkarte erforderlich.


Häufig gestellte Fragen

Q: Benötige ich Adobe Acrobat oder irgendeine andere PDF‑Software auf dem Server?
A: Nein. GroupDocs.Comparison ist eine eigenständige .NET‑Bibliothek, die PDF‑Dateien ohne Drittanbieter‑Abhängigkeiten lesen und schreiben kann.

Q: Welchen Anzeige‑Modus sollte ich standardmäßig verwenden?
A: Beginnen Sie mit Inline — es erzeugt das kompakteste Ergebnis und lässt sich am einfachsten teilen. Wechseln Sie zu SideBySide, wenn umfangreiche Änderungen die Inline‑Ansicht schwer lesbar machen, oder nutzen Sie Interleaved, wenn Reviewer das Ergebnis in einem PDF‑Reader mit „Two Page View“ öffnen.

Q: Kann ich Dokumente in anderen Formaten als PDF vergleichen?
A: Ja — die Bibliothek unterstützt Word‑Dokumente, Excel‑Tabellen, PowerPoint‑Präsentationen, Klartext‑Dateien und vieles mehr. Die vollständige Liste finden Sie in der documentation.

Q: Was passiert, wenn ich keine Lizenz setze?
A: Die Bibliothek läuft im Evaluierungsmodus. Ausgabedokumente enthalten ein Wasserzeichen und nur die ersten paar Seiten werden verarbeitet. Eine temporary license entfernt diese Einschränkungen für Tests.

Q: Kann ich nur Bilder in einem PDF vergleichen und Textänderungen ignorieren?
A: Verwenden Sie CompareImagesPdf = true in PdfCompareOptions, um den Bildvergleich einzuschließen. Um ausschließlich Bilder zu prüfen, können Sie dies mit der Eigenschaft ImagesInheritanceMode kombinieren; siehe die API‑Referenz für Details.


Fazit

GroupDocs.Comparison for .NET 26.4 gibt Ihnen präzise, code‑gesteuerte Kontrolle darüber, wie PDF‑Vergleichsergebnisse dargestellt werden. Der Inline‑Modus deckt den häufigsten Anwendungsfall ab — ein einzelnes, teilbares rot markiertes PDF. SideBySide hält stark veränderten Inhalt sauber und lesbar. Interleaved passt natürlich zu jedem PDF‑Viewer mit Two Page View für einen voll‑seitigen Durchlauf. Zusätzlich ermöglicht die Seitenbereichs‑Filterung, exakt die relevanten Abschnitte zu adressieren, und PdfCompareOptions fasst alle PDF‑spezifischen Einstellungen in einer leicht auffindbaren Klasse zusammen.

Wählen Sie den Modus, der zu Ihrem Workflow passt, oder erzeugen Sie alle drei und lassen Sie jede Zielgruppe die bevorzugte Ansicht wählen.

Weitere Ressourcen