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": "Comparer des PDF",
"subtitle": "Comparer deux PDF côte à côte."
"subtitle": "Comparer deux PDF côte à côte.",
"firstPdf": "Premier PDF",
"secondPdf": "Deuxième PDF",
"clickOrDrop": "Cliquer ou déposer",
"page": "Page",
"overlay": "Superposition",
"sideBySide": "Côte à côte",
"flicker": "Clignotement",
"syncScroll": "Synchroniser le défilement",
"export": "Exporter",
"exportAsPdf": "Exporter en PDF",
"splitView": "Vue divisée",
"alternating": "Alterné",
"leftDocument": "Document de gauche",
"rightDocument": "Document de droite",
"original": "Original",
"modified": "Modifié",
"searchChanges": "Rechercher des modifications...",
"deleted": "Supprimé",
"added": "Ajouté",
"prevPage": "Page précédente",
"nextPage": "Page suivante",
"prevChange": "Modification précédente",
"nextChange": "Modification suivante",
"uploadTwoPdfs": "Téléversez deux PDF pour voir les différences.",
"noDifferences": "Aucune différence détectée sur cette page.",
"noMatchingChanges": "Aucune modification ne correspond au filtre actuel.",
"pageNotExist": "La page {{page}} nexiste pas dans ce PDF.",
"noPairedPage": "Aucune page associée pour ce côté.",
"buildingModel": "Création du modèle dappariement des pages...",
"indexingPdf": "Indexation du PDF {{num}}, page {{page}} sur {{total}}...",
"loadingComparison": "Chargement de la comparaison {{current}} sur {{total}}...",
"runningOcr": "Exécution de lOCR sur la page {{page}}...",
"preparingExport": "Préparation de lexport PDF...",
"renderingPage": "Rendu de la page {{current}} sur {{total}}...",
"exportError": "Erreur dexport",
"exportFailed": "Impossible dexporter le PDF de comparaison.",
"loadingFile": "Chargement de {{name}}...",
"invalidFile": "Fichier invalide",
"invalidFileMsg": "Veuillez sélectionner un fichier PDF valide.",
"loadError": "Impossible de charger le PDF. Il est peut-être corrompu ou protégé par mot de passe."
},
"posterizePdf": {
"name": "Posteriser un PDF",