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": "مقارنة ملفات 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": "الصفحة {{page}} غير موجودة في ملف PDF هذا.",
"noPairedPage": "لا توجد صفحة مقترنة لهذا الجانب.",
"buildingModel": "جارٍ إنشاء نموذج إقران الصفحات...",
"indexingPdf": "جارٍ فهرسة PDF {{num}} الصفحة {{page}} من {{total}}...",
"loadingComparison": "جارٍ تحميل المقارنة {{current}} من {{total}}...",
"runningOcr": "جارٍ تشغيل OCR على الصفحة {{page}}...",
"preparingExport": "جارٍ تجهيز تصدير PDF...",
"renderingPage": "جارٍ عرض الصفحة {{current}} من {{total}}...",
"exportError": "خطأ في التصدير",
"exportFailed": "تعذر تصدير ملف PDF المقارن.",
"loadingFile": "جارٍ تحميل {{name}}...",
"invalidFile": "ملف غير صالح",
"invalidFileMsg": "يرجى اختيار ملف PDF صالح.",
"loadError": "تعذر تحميل ملف PDF. قد يكون تالفًا أو محميًا بكلمة مرور."
},
"posterizePdf": {
"name": "تقسيم PDF إلى ملصقات",