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": "Confronta PDF",
"subtitle": "Confronta due PDF fianco a fianco."
"subtitle": "Confronta due PDF fianco a fianco.",
"firstPdf": "Primo PDF",
"secondPdf": "Secondo PDF",
"clickOrDrop": "Clicca o rilascia",
"page": "Pagina",
"overlay": "Sovrapposizione",
"sideBySide": "Affiancato",
"flicker": "Lampeggio",
"syncScroll": "Sincronizza scorrimento",
"export": "Esporta",
"exportAsPdf": "Esporta come PDF",
"splitView": "Vista divisa",
"alternating": "Alternato",
"leftDocument": "Documento sinistro",
"rightDocument": "Documento destro",
"original": "Originale",
"modified": "Modificato",
"searchChanges": "Cerca modifiche...",
"deleted": "Eliminato",
"added": "Aggiunto",
"prevPage": "Pagina precedente",
"nextPage": "Pagina successiva",
"prevChange": "Modifica precedente",
"nextChange": "Modifica successiva",
"uploadTwoPdfs": "Carica due PDF per vedere le differenze.",
"noDifferences": "Nessuna differenza rilevata in questa pagina.",
"noMatchingChanges": "Nessuna modifica corrisponde al filtro corrente.",
"pageNotExist": "La pagina {{page}} non esiste in questo PDF.",
"noPairedPage": "Nessuna pagina associata per questo lato.",
"buildingModel": "Creazione del modello di abbinamento pagine...",
"indexingPdf": "Indicizzazione del PDF {{num}}, pagina {{page}} di {{total}}...",
"loadingComparison": "Caricamento confronto {{current}} di {{total}}...",
"runningOcr": "Esecuzione OCR sulla pagina {{page}}...",
"preparingExport": "Preparazione esportazione PDF...",
"renderingPage": "Rendering pagina {{current}} di {{total}}...",
"exportError": "Errore di esportazione",
"exportFailed": "Impossibile esportare il PDF di confronto.",
"loadingFile": "Caricamento di {{name}}...",
"invalidFile": "File non valido",
"invalidFileMsg": "Seleziona un file PDF valido.",
"loadError": "Impossibile caricare il PDF. Potrebbe essere danneggiato o protetto da password."
},
"posterizePdf": {
"name": "Posterizza PDF",