feat: enhance PDF comparison with new change types and zoom functionality

- Added support for 'moved' and 'style-changed' change types in PDF comparison.
- Implemented category filters for changes, allowing users to filter by text, images, headers, annotations, formatting, and background.
- Introduced zoom functionality with buttons for zooming in, out, and resetting to default.
- Updated UI to reflect new change types and categories, including visual indicators for moved and style-changed items.
- Enhanced summary display to include counts for moved and style-changed changes.
- Refactored rendering logic to accommodate zoom levels and improve performance.
- Added tests for new change detection features and category assignments.
This commit is contained in:
alam00000
2026-03-10 13:47:46 +05:30
parent 89d7cd8e3d
commit 5232102ac0
31 changed files with 2503 additions and 183 deletions

View File

@@ -292,7 +292,47 @@
},
"comparePdfs": {
"name": "PDFs vergleichen",
"subtitle": "Zwei PDFs nebeneinander vergleichen."
"subtitle": "Zwei PDFs nebeneinander vergleichen.",
"firstPdf": "Erste PDF",
"secondPdf": "Zweite PDF",
"clickOrDrop": "Klicken oder ablegen",
"page": "Seite",
"overlay": "Überlagerung",
"sideBySide": "Nebeneinander",
"flicker": "Flackern",
"syncScroll": "Synchrones Scrollen",
"export": "Exportieren",
"exportAsPdf": "Als PDF exportieren",
"splitView": "Geteilte Ansicht",
"alternating": "Abwechselnd",
"leftDocument": "Linkes Dokument",
"rightDocument": "Rechtes Dokument",
"original": "Original",
"modified": "Geändert",
"searchChanges": "Änderungen suchen...",
"deleted": "Gelöscht",
"added": "Hinzugefügt",
"prevPage": "Vorherige Seite",
"nextPage": "Nächste Seite",
"prevChange": "Vorherige Änderung",
"nextChange": "Nächste Änderung",
"uploadTwoPdfs": "Laden Sie zwei PDFs hoch, um Unterschiede zu sehen.",
"noDifferences": "Auf dieser Seite wurden keine Unterschiede gefunden.",
"noMatchingChanges": "Keine Änderungen entsprechen dem aktuellen Filter.",
"pageNotExist": "Seite {{page}} existiert nicht in dieser PDF.",
"noPairedPage": "Für diese Seite gibt es keine zugeordnete Seite.",
"buildingModel": "Seitenzuordnungsmodell wird erstellt...",
"indexingPdf": "PDF {{num}}, Seite {{page}} von {{total}} wird indiziert...",
"loadingComparison": "Vergleich {{current}} von {{total}} wird geladen...",
"runningOcr": "OCR wird auf Seite {{page}} ausgeführt...",
"preparingExport": "PDF-Export wird vorbereitet...",
"renderingPage": "Seite {{current}} von {{total}} wird gerendert...",
"exportError": "Exportfehler",
"exportFailed": "Vergleichs-PDF konnte nicht exportiert werden.",
"loadingFile": "{{name}} wird geladen...",
"invalidFile": "Ungültige Datei",
"invalidFileMsg": "Bitte wählen Sie eine gültige PDF-Datei aus.",
"loadError": "PDF konnte nicht geladen werden. Sie ist möglicherweise beschädigt oder passwortgeschützt."
},
"posterizePdf": {
"name": "PDF posterisieren",