feat: add PDF manipulation tools including Protect, Rotate, Split, Unlock, and Watermark functionalities

- Implemented ProtectPdf component for adding password protection to PDFs.
- Implemented RotatePdf component for rotating PDF pages by specified angles.
- Implemented SplitPdf component for splitting PDFs into individual pages or specified ranges.
- Implemented UnlockPdf component for removing password protection from PDFs.
- Implemented WatermarkPdf component for adding custom text watermarks to PDFs.
- Updated i18n files to include translations for new tools.
- Enhanced HomePage to include links to new PDF tools.
- Updated Nginx configuration to improve security with CSP and Permissions-Policy headers.
- Updated sitemap generation script to include new tools.
This commit is contained in:
Your Name
2026-03-02 02:44:49 +02:00
parent 85d98381df
commit 31f1e4b312
24 changed files with 3337 additions and 2 deletions

View File

@@ -82,6 +82,92 @@
"toSentenceCase": "حالة الجملة",
"removeDiacritics": "إزالة التشكيل العربي",
"copyResult": "نسخ النتيجة"
},
"mergePdf": {
"title": "دمج PDF",
"description": "ادمج عدة ملفات PDF في مستند واحد. مجاني وسريع.",
"shortDesc": "دمج PDF",
"selectFiles": "اختر ملفات PDF",
"addMore": "أضف ملفات أخرى",
"filesSelected": "{{count}} ملفات مختارة",
"dragToReorder": "اسحب الملفات لإعادة ترتيبها"
},
"splitPdf": {
"title": "تقسيم PDF",
"description": "قسّم ملف PDF إلى صفحات فردية أو استخرج نطاقات صفحات محددة.",
"shortDesc": "تقسيم PDF",
"allPages": "كل الصفحات",
"pageRange": "نطاق الصفحات",
"rangeHint": "مثال: 1,3,5-8",
"rangePlaceholder": "أدخل الصفحات: 1,3,5-8"
},
"rotatePdf": {
"title": "تدوير PDF",
"description": "دوّر جميع صفحات ملف PDF بزاوية 90° أو 180° أو 270° درجة.",
"shortDesc": "تدوير PDF",
"angle": "زاوية التدوير",
"90": "90° مع عقارب الساعة",
"180": "180° قلب",
"270": "270° عكس عقارب الساعة"
},
"pdfToImages": {
"title": "PDF إلى صور",
"description": "حوّل كل صفحة من ملف PDF إلى صور عالية الجودة (PNG أو JPG).",
"shortDesc": "PDF → صور",
"format": "صيغة الصورة",
"dpi": "الدقة (DPI)",
"dpiLow": "72 — شاشة",
"dpiMedium": "150 — قياسي",
"dpiHigh": "200 — جيد",
"dpiUltra": "300 — جودة طباعة"
},
"imagesToPdf": {
"title": "صور إلى PDF",
"description": "ادمج عدة صور في مستند PDF واحد.",
"shortDesc": "صور → PDF",
"selectImages": "اختر الصور",
"addMore": "أضف صور أخرى",
"imagesSelected": "{{count}} صور مختارة"
},
"watermarkPdf": {
"title": "علامة مائية PDF",
"description": "أضف علامة مائية نصية مخصصة لكل صفحة من ملف PDF.",
"shortDesc": "إضافة علامة مائية",
"text": "نص العلامة المائية",
"textPlaceholder": "أدخل نص العلامة المائية",
"opacity": "الشفافية",
"light": "خفيف",
"heavy": "كثيف"
},
"protectPdf": {
"title": "حماية PDF",
"description": "أضف حماية بكلمة مرور لملف PDF لمنع الوصول غير المصرّح به.",
"shortDesc": "حماية PDF",
"password": "كلمة المرور",
"passwordPlaceholder": "أدخل كلمة مرور قوية",
"confirmPassword": "تأكيد كلمة المرور",
"confirmPlaceholder": "أعد إدخال كلمة المرور",
"mismatch": "كلمات المرور غير متطابقة"
},
"unlockPdf": {
"title": "فك حماية PDF",
"description": "أزل حماية كلمة المرور من ملف PDF.",
"shortDesc": "فك حماية PDF",
"password": "كلمة المرور الحالية",
"passwordPlaceholder": "أدخل كلمة مرور الملف"
},
"pageNumbers": {
"title": "إضافة أرقام الصفحات",
"description": "أضف أرقام الصفحات لكل صفحة في ملف PDF. اختر الموضع ورقم البداية.",
"shortDesc": "أرقام الصفحات",
"position": "موضع الرقم",
"startNumber": "ابدأ من",
"bottomCenter": "أسفل الوسط",
"bottomRight": "أسفل اليمين",
"bottomLeft": "أسفل اليسار",
"topCenter": "أعلى الوسط",
"topRight": "أعلى اليمين",
"topLeft": "أعلى اليسار"
}
},
"result": {

View File

@@ -82,6 +82,92 @@
"toSentenceCase": "Sentence case",
"removeDiacritics": "Remove Arabic Diacritics",
"copyResult": "Copy Result"
},
"mergePdf": {
"title": "Merge PDF",
"description": "Combine multiple PDF files into a single document. Free and fast.",
"shortDesc": "Merge PDFs",
"selectFiles": "Select PDF Files",
"addMore": "Add More Files",
"filesSelected": "{{count}} files selected",
"dragToReorder": "Drag files to reorder them"
},
"splitPdf": {
"title": "Split PDF",
"description": "Split a PDF into individual pages or extract specific page ranges.",
"shortDesc": "Split PDF",
"allPages": "All Pages",
"pageRange": "Page Range",
"rangeHint": "e.g. 1,3,5-8",
"rangePlaceholder": "Enter pages: 1,3,5-8"
},
"rotatePdf": {
"title": "Rotate PDF",
"description": "Rotate all pages of a PDF by 90°, 180°, or 270° degrees.",
"shortDesc": "Rotate PDF",
"angle": "Rotation Angle",
"90": "90° Clockwise",
"180": "180° Flip",
"270": "270° Counter-clockwise"
},
"pdfToImages": {
"title": "PDF to Images",
"description": "Convert each page of a PDF into high-quality images (PNG or JPG).",
"shortDesc": "PDF → Images",
"format": "Image Format",
"dpi": "Resolution (DPI)",
"dpiLow": "72 — Screen",
"dpiMedium": "150 — Standard",
"dpiHigh": "200 — Good",
"dpiUltra": "300 — Print Quality"
},
"imagesToPdf": {
"title": "Images to PDF",
"description": "Combine multiple images into a single PDF document.",
"shortDesc": "Images → PDF",
"selectImages": "Select Images",
"addMore": "Add More Images",
"imagesSelected": "{{count}} images selected"
},
"watermarkPdf": {
"title": "Watermark PDF",
"description": "Add a custom text watermark to every page of your PDF.",
"shortDesc": "Add Watermark",
"text": "Watermark Text",
"textPlaceholder": "Enter watermark text",
"opacity": "Opacity",
"light": "Light",
"heavy": "Heavy"
},
"protectPdf": {
"title": "Protect PDF",
"description": "Add password protection to your PDF to prevent unauthorized access.",
"shortDesc": "Protect PDF",
"password": "Password",
"passwordPlaceholder": "Enter a strong password",
"confirmPassword": "Confirm Password",
"confirmPlaceholder": "Re-enter the password",
"mismatch": "Passwords do not match"
},
"unlockPdf": {
"title": "Unlock PDF",
"description": "Remove password protection from your PDF file.",
"shortDesc": "Unlock PDF",
"password": "Current Password",
"passwordPlaceholder": "Enter the PDF password"
},
"pageNumbers": {
"title": "Add Page Numbers",
"description": "Add page numbers to every page of your PDF. Choose position and starting number.",
"shortDesc": "Add Page Numbers",
"position": "Number Position",
"startNumber": "Start From",
"bottomCenter": "Bottom Center",
"bottomRight": "Bottom Right",
"bottomLeft": "Bottom Left",
"topCenter": "Top Center",
"topRight": "Top Right",
"topLeft": "Top Left"
}
},
"result": {