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

@@ -288,7 +288,47 @@
},
"comparePdfs": {
"name": "Comparar PDFs",
"subtitle": "Compare dois PDFs lado a lado."
"subtitle": "Compare dois PDFs lado a lado.",
"firstPdf": "Primeiro PDF",
"secondPdf": "Segundo PDF",
"clickOrDrop": "Clique ou solte",
"page": "Página",
"overlay": "Sobreposição",
"sideBySide": "Lado a lado",
"flicker": "Alternância rápida",
"syncScroll": "Sincronizar rolagem",
"export": "Exportar",
"exportAsPdf": "Exportar como PDF",
"splitView": "Visualização dividida",
"alternating": "Alternado",
"leftDocument": "Documento esquerdo",
"rightDocument": "Documento direito",
"original": "Original",
"modified": "Modificado",
"searchChanges": "Pesquisar alterações...",
"deleted": "Excluído",
"added": "Adicionado",
"prevPage": "Página anterior",
"nextPage": "Próxima página",
"prevChange": "Alteração anterior",
"nextChange": "Próxima alteração",
"uploadTwoPdfs": "Envie dois PDFs para ver as diferenças.",
"noDifferences": "Nenhuma diferença detectada nesta página.",
"noMatchingChanges": "Nenhuma alteração corresponde ao filtro atual.",
"pageNotExist": "A página {{page}} não existe neste PDF.",
"noPairedPage": "Não há página pareada para este lado.",
"buildingModel": "Criando modelo de pareamento de páginas...",
"indexingPdf": "Indexando PDF {{num}}, página {{page}} de {{total}}...",
"loadingComparison": "Carregando comparação {{current}} de {{total}}...",
"runningOcr": "Executando OCR na página {{page}}...",
"preparingExport": "Preparando exportação em PDF...",
"renderingPage": "Renderizando página {{current}} de {{total}}...",
"exportError": "Erro de exportação",
"exportFailed": "Não foi possível exportar o PDF de comparação.",
"loadingFile": "Carregando {{name}}...",
"invalidFile": "Arquivo inválido",
"invalidFileMsg": "Selecione um arquivo PDF válido.",
"loadError": "Não foi possível carregar o PDF. Ele pode estar corrompido ou protegido por senha."
},
"posterizePdf": {
"name": "Posterizar PDF",