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": "比較 PDF",
"subtitle": "並排比較兩個 PDF。"
"subtitle": "並排比較兩個 PDF。",
"firstPdf": "第一個 PDF",
"secondPdf": "第二個 PDF",
"clickOrDrop": "點擊或拖放",
"page": "頁面",
"overlay": "疊加",
"sideBySide": "並排",
"flicker": "閃爍",
"syncScroll": "同步捲動",
"export": "匯出",
"exportAsPdf": "匯出為 PDF",
"splitView": "分割檢視",
"alternating": "交替",
"leftDocument": "左側文件",
"rightDocument": "右側文件",
"original": "原始",
"modified": "修改後",
"searchChanges": "搜尋變更...",
"deleted": "已刪除",
"added": "已新增",
"prevPage": "上一頁",
"nextPage": "下一頁",
"prevChange": "上一個變更",
"nextChange": "下一個變更",
"uploadTwoPdfs": "上傳兩個 PDF 以查看差異。",
"noDifferences": "此頁面未偵測到差異。",
"noMatchingChanges": "沒有符合目前篩選條件的變更。",
"pageNotExist": "此 PDF 中不存在第 {{page}} 頁。",
"noPairedPage": "此側沒有配對頁面。",
"buildingModel": "正在建立頁面配對模型...",
"indexingPdf": "正在索引 PDF {{num}},第 {{page}} / {{total}} 頁...",
"loadingComparison": "正在載入比較 {{current}} / {{total}}...",
"runningOcr": "正在對第 {{page}} 頁執行 OCR...",
"preparingExport": "正在準備 PDF 匯出...",
"renderingPage": "正在轉譯第 {{current}} / {{total}} 頁...",
"exportError": "匯出錯誤",
"exportFailed": "無法匯出比較 PDF。",
"loadingFile": "正在載入 {{name}}...",
"invalidFile": "無效檔案",
"invalidFileMsg": "請選擇有效的 PDF 檔案。",
"loadError": "無法載入 PDF。檔案可能已損毀或受密碼保護。"
},
"posterizePdf": {
"name": "海報化 PDF",