feat: add "Add Page Labels" tool to the application

- Introduced a new tool for adding page labels to PDF documents, allowing users to apply Roman numerals, prefixes, and custom numbering ranges.
- Created a new HTML page for the tool with a user-friendly interface for file upload and label rule configuration.
- Implemented logic for handling file uploads, processing PDF files, and applying page labels based on user-defined rules.
- Added necessary types and utility functions for managing page label styles and normalization of start values.
- Updated main application configuration to include the new tool in the navigation.
- Added tests for page label utilities to ensure correct functionality.
This commit is contained in:
alam00000
2026-03-16 14:34:27 +05:30
parent 31f43b557f
commit 477839f106
27 changed files with 2318 additions and 0 deletions

View File

@@ -86,6 +86,65 @@
"name": "أرقام الصفحات",
"subtitle": "إدراج أرقام الصفحات في مستندك."
},
"addPageLabels": {
"name": "إضافة تسميات الصفحات",
"subtitle": "تطبيق تسميات صفحات PDF باستخدام الأرقام الرومانية والبادئات وقيم البدء المخصصة.",
"uploadHint": "ملف PDF",
"howLabelsWorkTitle": "كيف تعمل التسميات",
"howLabelsWorkStep1": "اترك نطاق الصفحات فارغًا لتسمية جميع الصفحات.",
"howLabelsWorkStep2": "استخدم أنماطًا مثل الأرقام الرومانية للمقدمات والترقيم العشري للمحتوى الرئيسي.",
"howLabelsWorkStep3": "استخدم البادئة مع قيمة بدء 0 لإنشاء تسميات مثل A-0 وA-1 وA-2.",
"howLabelsWorkStep4": "فعّل التقدّم عندما تستخدم قاعدة واحدة نطاقًا غير متصل مثل 1-9,30-40 أو الصفحات الفردية.",
"labelRulesTitle": "قواعد التسميات",
"addRule": "إضافة قاعدة",
"removeExistingLabels": "إزالة تسميات الصفحات الحالية قبل تطبيق هذه القواعد",
"cpdfNote": "تستخدم هذه الأداة CoherentPDF داخل متصفحك. إذا لم يكن CoherentPDF مهيأً، فسيُطلب منك إعداده في إعدادات WASM.",
"processButton": "إضافة تسميات الصفحات",
"howItWorksUploadTitle": "رفع الملف",
"howItWorksUploadDescription": "اختر ملف PDF الذي تريد إعادة تسميته.",
"howItWorksDefineTitle": "تحديد القواعد",
"howItWorksDefineDescription": "اضبط قاعدة واحدة أو أكثر لتسميات الصفحات مع نطاقات الصفحات والأنماط والبادئات وقيم البدء.",
"howItWorksDownloadTitle": "تنزيل",
"howItWorksDownloadDescription": "احفظ ملف PDF المحدّث مع تسميات صفحاته الجديدة.",
"relatedToolsTitle": "أدوات PDF ذات الصلة",
"faqWhatIsQuestion": "ما هي تسمية الصفحة؟",
"faqWhatIsAnswer": "تسمية الصفحة هي الترقيم الذي تعرضه برامج قراءة PDF في الصور المصغّرة والتنقل بين الصفحات ومربعات حوار الطباعة. وهي لا تضيف نصًا جديدًا مطبوعًا على الصفحة نفسها.",
"faqMixQuestion": "هل يمكنني مزج الأرقام الرومانية مع الأرقام العادية؟",
"faqMixAnswer": "نعم. أضف قواعد متعددة، مثل 1-4 بنمط LowercaseRoman و5-20 بنمط DecimalArabic.",
"faqPrivacyQuestion": "هل تظل ملفاتي خاصة؟",
"faqPrivacyAnswer": "نعم. تتم المعالجة داخل متصفحك باستخدام CoherentPDF WASM. لا يغادر ملف PDF جهازك.",
"invalidFileTitle": "ملف غير صالح",
"invalidFileMessage": "يرجى رفع ملف PDF صالح.",
"loadingPdf": "جارٍ تحميل ملف PDF...",
"protectedPdfTitle": "ملف PDF محمي",
"protectedPdfMessage": "هذا الملف محمي بكلمة مرور. يرجى استخدام أداة فك التشفير أو تغيير الأذونات أولاً.",
"loadErrorMessage": "تعذر تحميل ملف PDF. قد يكون الملف غير صالح أو تالفًا أو محميًا بكلمة مرور.",
"fileMeta": "{{size}} • {{count}} صفحات",
"ruleTitle": "قاعدة التسمية {{number}}",
"pageRangeLabel": "نطاق الصفحات",
"pageRangePlaceholder": "جميع الصفحات، أو مثلًا 1-4، 7، فردي",
"labelStyleLabel": "نمط التسمية",
"labelPrefixLabel": "بادئة التسمية",
"labelPrefixPlaceholder": "بادئة اختيارية، مثل A-",
"startValueLabel": "قيمة البدء",
"continueNumbering": "متابعة الترقيم عبر النطاقات غير المتصلة",
"examplesNote": "أمثلة: 1-4 للمقدمة بالأرقام الرومانية، و15-20 مع البادئة A- وقيمة بدء 0، أو الصفحات الفردية مع تفعيل المتابعة.",
"uploadFirstMessage": "يرجى رفع ملف PDF أولاً.",
"applyingLabels": "جارٍ تطبيق تسميات الصفحات...",
"invalidRangeMessage": "القاعدة {{number}} تحتوي على نطاق صفحات غير صالح: {{range}}",
"allPages": "كل الصفحات",
"emptyOutputMessage": "أنتج CoherentPDF ملفًا فارغًا.",
"successMessage": "تمت إضافة تسميات الصفحات بنجاح!",
"processErrorMessage": "تعذر إضافة تسميات الصفحات.",
"styleOptions": {
"DecimalArabic": "أرقام عشرية",
"LowercaseRoman": "أرقام رومانية صغيرة",
"UppercaseRoman": "أرقام رومانية كبيرة",
"LowercaseLetters": "حروف صغيرة",
"UppercaseLetters": "حروف كبيرة",
"NoLabelPrefixOnly": "بادئة فقط بدون ترقيم"
}
},
"batesNumbering": {
"name": "ترقيم بيتس",
"subtitle": "إضافة أرقام بيتس التسلسلية عبر ملف PDF واحد أو أكثر."