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": "So sánh PDF",
"subtitle": "So sánh hai PDF cạnh nhau."
"subtitle": "So sánh hai PDF cạnh nhau.",
"firstPdf": "PDF thứ nhất",
"secondPdf": "PDF thứ hai",
"clickOrDrop": "Nhấp hoặc thả",
"page": "Trang",
"overlay": "Chồng lớp",
"sideBySide": "Cạnh nhau",
"flicker": "Nhấp nháy",
"syncScroll": "Đồng bộ cuộn",
"export": "Xuất",
"exportAsPdf": "Xuất dưới dạng PDF",
"splitView": "Chế độ chia đôi",
"alternating": "Luân phiên",
"leftDocument": "Tài liệu bên trái",
"rightDocument": "Tài liệu bên phải",
"original": "Bản gốc",
"modified": "Đã sửa đổi",
"searchChanges": "Tìm kiếm thay đổi...",
"deleted": "Đã xóa",
"added": "Đã thêm",
"prevPage": "Trang trước",
"nextPage": "Trang sau",
"prevChange": "Thay đổi trước",
"nextChange": "Thay đổi sau",
"uploadTwoPdfs": "Tải lên hai PDF để xem sự khác biệt.",
"noDifferences": "Không phát hiện khác biệt trên trang này.",
"noMatchingChanges": "Không có thay đổi nào khớp với bộ lọc hiện tại.",
"pageNotExist": "Trang {{page}} không tồn tại trong PDF này.",
"noPairedPage": "Không có trang ghép cho phía này.",
"buildingModel": "Đang xây dựng mô hình ghép trang...",
"indexingPdf": "Đang lập chỉ mục PDF {{num}}, trang {{page}} trên {{total}}...",
"loadingComparison": "Đang tải so sánh {{current}} trên {{total}}...",
"runningOcr": "Đang chạy OCR trên trang {{page}}...",
"preparingExport": "Đang chuẩn bị xuất PDF...",
"renderingPage": "Đang kết xuất trang {{current}} trên {{total}}...",
"exportError": "Lỗi xuất",
"exportFailed": "Không thể xuất PDF so sánh.",
"loadingFile": "Đang tải {{name}}...",
"invalidFile": "Tệp không hợp lệ",
"invalidFileMsg": "Vui lòng chọn tệp PDF hợp lệ.",
"loadError": "Không thể tải PDF. Có thể tệp bị hỏng hoặc được bảo vệ bằng mật khẩu."
},
"posterizePdf": {
"name": "Posterize PDF",