feat: Enhance PDF tools with new reorder and watermark removal functionalities

- Added tests for rotating PDFs, removing watermarks, and reordering pages in the backend.
- Implemented frontend logic to read page counts from uploaded PDFs and validate page orders.
- Updated internationalization files to include new strings for reorder and watermark removal features.
- Improved user feedback during page count reading and validation in the Reorder PDF component.
- Ensured that the reorder functionality requires a complete permutation of pages.
This commit is contained in:
Your Name
2026-03-11 14:21:25 +02:00
parent e4e3b9fe2d
commit e06e64f85f
8 changed files with 641 additions and 69 deletions

View File

@@ -636,16 +636,24 @@
},
"removeWatermark": {
"title": "إزالة العلامة المائية",
"description": "أزل العلامات المائية النصية من ملفات PDF تلقائياً.",
"description": "أزل العلامات المائية النصية وطبقات الصور المدعومة من ملفات PDF تلقائياً.",
"shortDesc": "إزالة العلامة المائية"
},
"reorderPdf": {
"title": "إعادة ترتيب صفحات PDF",
"description": "أعد ترتيب صفحات PDF بأي ترتيب تريده.",
"description": "أعد ترتيب صفحات PDF بأي ترتيب تريده مع تضمين كل صفحة مرة واحدة بالضبط.",
"shortDesc": "إعادة الترتيب",
"orderLabel": "ترتيب الصفحات الجديد",
"orderPlaceholder": "مثال: 3,1,2,5,4",
"orderHint": "أدخل أرقام الصفحات مفصولة بفواصل بالترتيب المطلوب."
"orderHint": "أدخل كل رقم صفحة مرة واحدة بالضبط، مفصولاً بفواصل، بالترتيب المطلوب.",
"readingPageCount": "جارٍ قراءة عدد الصفحات الكلي...",
"pageCount": "عدد الصفحات المكتشف: {{count}}",
"pageCountFailed": "تعذر قراءة عدد الصفحات من هذا الملف. يرجى اختيار ملف آخر.",
"orderInvalidFormat": "استخدم أرقام صفحات مفصولة بفواصل فقط، مثل 3,1,2.",
"orderMustIncludeAllPages": "يجب تضمين كل الصفحات مرة واحدة بالضبط من 1 إلى {{count}}.",
"orderOutOfRange": "صفحات خارج النطاق: {{pages}}.",
"orderMissingPages": "الصفحات المفقودة: {{pages}}.",
"orderDuplicatePages": "الصفحات المكررة: {{pages}}."
},
"extractPages": {
"title": "استخراج صفحات PDF",
@@ -883,12 +891,12 @@
]
},
"removeWatermark": {
"whatItDoes": "أزل العلامات المائية النصية من ملفات PDF تلقائياً. تكتشف الأداة وتزيل طبقات النص المائية مع الحفاظ على باقي محتوى المستند وتخطيطه.",
"howToUse": ["ارفع ملف PDF بالعلامة المائية.", "تكتشف الأداة تلقائياً العلامات المائية النصية.", "انقر إزالة لمعالجة المستند.", "حمّل PDF النظيف بدون علامات مائية."],
"benefits": ["كشف تلقائي للعلامات المائية", "يحافظ على محتوى وتخطيط المستند", "يعمل مع العلامات المائية النصية", "مجاني وآمن", "لا حاجة لتثبيت برامج"],
"whatItDoes": "أزل العلامات المائية النصية وطبقات الصور المدعومة من ملفات PDF تلقائياً. تكتشف الأداة طبقات العلامات القابلة للإزالة مع الحفاظ على باقي محتوى المستند وتخطيطه.",
"howToUse": ["ارفع ملف PDF الذي يحتوي على علامة مائية.", "تكتشف الأداة تلقائياً العلامات المائية النصية أو طبقات الصور المدعومة.", "انقر إزالة لمعالجة المستند.", "حمّل PDF النظيف بدون علامات مائية."],
"benefits": ["كشف تلقائي للعلامات المائية", "يحافظ على محتوى وتخطيط المستند", "يعمل مع العلامات النصية وطبقات الصور المدعومة", "مجاني وآمن", "لا حاجة لتثبيت برامج"],
"useCases": ["تنظيف إصدارات المسودة للتوزيع النهائي", "إزالة العلامات التجارية القديمة من المستندات", "تحضير نسخ نظيفة للأرشيف", "إزالة علامات العينة/التجربة من ملفات PDF المشتراة", "تنظيف المستندات الممسوحة ضوئياً من طبقات غير مرغوبة"],
"faq": [
{"q": "هل يمكن لهذه الأداة إزالة أي علامة مائية؟", "a": "تعمل الأداة بشكل أفضل مع العلامات المائية النصية. العلامات المائية المبنية على الصور قد تحتاج معالجة إضافية."},
{"q": "هل يمكن لهذه الأداة إزالة أي علامة مائية؟", "a": "تعمل الأداة بشكل أفضل مع العلامات المائية النصية وطبقات الصور المدعومة. العلامات المدمجة بعمق أو المسطحة قد تحتاج معالجة إضافية."},
{"q": "هل ستؤثر إزالة العلامة المائية على جودة المستند؟", "a": "لا، يتم إزالة نص العلامة المائية فقط. كل المحتوى الآخر يبقى سليماً."},
{"q": "هل من القانوني إزالة العلامات المائية؟", "a": "أزل العلامات المائية فقط من المستندات التي تملكها أو لديك إذن بتعديلها. احترم حقوق النشر والملكية الفكرية."}
]
@@ -927,14 +935,14 @@
]
},
"reorderPdf": {
"whatItDoes": "أعد ترتيب صفحات مستند PDF بأي ترتيب. حدد ترتيب صفحات مخصص لإعادة تنظيم مستندك بدون تقسيم وإعادة دمج.",
"howToUse": ["ارفع مستند PDF.", "أدخل ترتيب الصفحات الجديد (مثل 3,1,2,5,4).", "انقر إعادة ترتيب لتنظيم الصفحات.", "حمّل PDF المعاد ترتيبه."],
"benefits": ["ترتيب صفحات مخصص بصيغة بسيطة", "إعادة تنظيم بدون تقسيم ودمج", "يعمل على أي مستند PDF", "مجاني ومعالجة سريعة", "بدون فقدان الجودة"],
"whatItDoes": "أعد ترتيب صفحات مستند PDF بأي ترتيب. حدد permutation كاملة للصفحات لإعادة تنظيم مستندك بدون تقسيم وإعادة دمج.",
"howToUse": ["ارفع مستند PDF.", "أدخل ترتيب الصفحات الجديد مع تضمين كل صفحة مرة واحدة بالضبط (مثل 3,1,2,5,4).", "انقر إعادة ترتيب لتنظيم الصفحات.", "حمّل PDF المعاد ترتيبه."],
"benefits": ["ترتيب صفحات مخصص بصيغة بسيطة", "يمنع فقدان الصفحات أو تكرارها بالخطأ", "يعمل على أي مستند PDF", "مجاني ومعالجة سريعة", "بدون فقدان الجودة"],
"useCases": ["نقل ملحق إلى مقدمة المستند", "إعادة تنظيم عرض تقديمي لجمهور مختلف", "إصلاح ترتيب الصفحات في المستندات الممسوحة ضوئياً", "إنشاء ترتيبات مستندات مخصصة من ملفات PDF موجودة", "إعادة ترتيب الأقسام لتدفق مستند جديد"],
"faq": [
{"q": "كيف أعيد ترتيب صفحات PDF؟", "a": "ارفع PDF وأدخل ترتيب الصفحات الجديد كأرقام مفصولة بفواصل (مثل 3,1,2,5,4). حمّل PDF المعاد ترتيبه."},
{"q": "هل يمكنني تكرار الصفحات في الترتيب الجديد؟", "a": "عادةً تحدد كل رقم صفحة مرة واحدة بالترتيب المطلوب."},
{"q": "ماذا يحدث إذا تخطيت رقم صفحة؟", "a": "الصفحات المتخطاة لن تظهر في المخرجات، مما يزيلها فعلياً من المستند."}
{"q": "كيف أعيد ترتيب صفحات PDF؟", "a": "ارفع PDF وأدخل ترتيب الصفحات الجديد كأرقام مفصولة بفواصل مع تضمين كل صفحة مرة واحدة بالضبط (مثل 3,1,2,5,4). ثم حمّل PDF المعاد ترتيبه."},
{"q": "هل يمكنني تكرار الصفحات في الترتيب الجديد؟", "a": "لا. الأداة تتطلب permutation كاملة، لذلك يجب أن يظهر كل رقم صفحة مرة واحدة فقط."},
{"q": "ماذا يحدث إذا تخطيت رقم صفحة؟", "a": "ستطلب منك الأداة إكمال الترتيب قبل المعالجة حتى لا تُحذف أي صفحة بالخطأ."}
]
},
"extractPages": {

View File

@@ -636,16 +636,24 @@
},
"removeWatermark": {
"title": "Remove Watermark",
"description": "Remove text watermarks from PDF files automatically.",
"description": "Remove supported text and image overlay watermarks from PDF files automatically.",
"shortDesc": "Remove Watermark"
},
"reorderPdf": {
"title": "Reorder PDF Pages",
"description": "Rearrange the pages of your PDF in any order you want.",
"description": "Rearrange the pages of your PDF in any order you want while keeping every page exactly once.",
"shortDesc": "Reorder Pages",
"orderLabel": "New Page Order",
"orderPlaceholder": "e.g. 3,1,2,5,4",
"orderHint": "Enter page numbers separated by commas in the desired order."
"orderHint": "Enter every page number exactly once, separated by commas, in the desired order.",
"readingPageCount": "Reading total page count...",
"pageCount": "Detected pages: {{count}}",
"pageCountFailed": "Couldn't read the page count from this PDF. Please choose another file.",
"orderInvalidFormat": "Use comma-separated page numbers only, for example 3,1,2.",
"orderMustIncludeAllPages": "Include every page exactly once from 1 to {{count}}.",
"orderOutOfRange": "Out-of-range pages: {{pages}}.",
"orderMissingPages": "Missing pages: {{pages}}.",
"orderDuplicatePages": "Duplicate pages: {{pages}}."
},
"extractPages": {
"title": "Extract PDF Pages",
@@ -883,12 +891,12 @@
]
},
"removeWatermark": {
"whatItDoes": "Remove text watermarks from PDF files automatically. The tool detects and removes watermark text overlays while preserving the rest of the document content and layout.",
"howToUse": ["Upload your watermarked PDF.", "The tool automatically detects text watermarks.", "Click remove to process the document.", "Download the clean PDF without watermarks."],
"benefits": ["Automatic watermark detection", "Preserves document content and layout", "Works with text-based watermarks", "Free and secure", "No software installation required"],
"whatItDoes": "Remove supported text and image overlay watermarks from PDF files automatically. The tool detects removable overlay blocks while preserving the rest of the document content and layout.",
"howToUse": ["Upload your watermarked PDF.", "The tool automatically detects supported text or image overlay watermarks.", "Click remove to process the document.", "Download the clean PDF without watermarks."],
"benefits": ["Automatic watermark detection", "Preserves document content and layout", "Works with supported text and image overlays", "Free and secure", "No software installation required"],
"useCases": ["Cleaning up draft versions for final distribution", "Removing outdated branding from documents", "Preparing clean versions for archival", "Removing sample/trial watermarks from purchased PDFs", "Cleaning scanned documents with unwanted overlays"],
"faq": [
{"q": "Can this tool remove any watermark?", "a": "The tool works best with text-based watermarks. Image-based or deeply embedded watermarks may require additional processing."},
{"q": "Can this tool remove any watermark?", "a": "The tool works best with supported text and image overlay watermarks. Deeply embedded or flattened watermarks may still require additional processing."},
{"q": "Will removing the watermark affect document quality?", "a": "No, only the watermark text is removed. All other content remains intact."},
{"q": "Is it legal to remove watermarks?", "a": "Only remove watermarks from documents you own or have permission to modify. Respect copyright and intellectual property rights."}
]
@@ -927,14 +935,14 @@
]
},
"reorderPdf": {
"whatItDoes": "Rearrange the pages of your PDF document in any order. Specify a custom page order to reorganize your document without splitting and re-merging. Quick and easy page reorganization.",
"howToUse": ["Upload your PDF document.", "Enter the new page order (e.g. 3,1,2,5,4).", "Click reorder to rearrange the pages.", "Download the reordered PDF."],
"benefits": ["Custom page ordering with simple syntax", "Reorganize without splitting and merging", "Works on any PDF document", "Free and fast processing", "No quality loss"],
"whatItDoes": "Rearrange the pages of your PDF document in any order. Specify a full page permutation to reorganize your document without splitting and re-merging.",
"howToUse": ["Upload your PDF document.", "Enter the new page order with every page exactly once (e.g. 3,1,2,5,4).", "Click reorder to rearrange the pages.", "Download the reordered PDF."],
"benefits": ["Custom page ordering with simple syntax", "Prevents accidental page loss or duplication", "Works on any PDF document", "Free and fast processing", "No quality loss"],
"useCases": ["Moving an appendix to the front of a document", "Reorganizing a presentation for a different audience", "Fixing page order in scanned documents", "Creating custom document arrangements from existing PDFs", "Rearranging sections for a new document flow"],
"faq": [
{"q": "How do I reorder PDF pages?", "a": "Upload your PDF and enter the new page order as comma-separated numbers (e.g. 3,1,2,5,4). Download the reordered PDF."},
{"q": "Can I duplicate pages in the new order?", "a": "Typically, you specify each page number once in your desired order."},
{"q": "What happens if I skip a page number?", "a": "Skipped pages will not appear in the output, effectively removing them from the document."}
{"q": "How do I reorder PDF pages?", "a": "Upload your PDF and enter the new page order as comma-separated numbers, including every page exactly once (e.g. 3,1,2,5,4). Download the reordered PDF."},
{"q": "Can I duplicate pages in the new order?", "a": "No. The tool expects a full permutation, so each page number must appear exactly once."},
{"q": "What happens if I skip a page number?", "a": "The tool will ask you to complete the order before processing so no pages are accidentally dropped."}
]
},
"extractPages": {

View File

@@ -636,16 +636,24 @@
},
"removeWatermark": {
"title": "Supprimer le filigrane",
"description": "Supprimez automatiquement les filigranes textuels des fichiers PDF.",
"description": "Supprimez automatiquement les filigranes textuels et les superpositions d'image prises en charge des fichiers PDF.",
"shortDesc": "Supprimer le filigrane"
},
"reorderPdf": {
"title": "Réorganiser les pages PDF",
"description": "Réorganisez les pages de votre PDF dans l'ordre souhaité.",
"description": "Réorganisez les pages de votre PDF dans l'ordre souhaité en conservant chaque page exactement une fois.",
"shortDesc": "Réorganiser les pages",
"orderLabel": "Nouvel ordre des pages",
"orderPlaceholder": "ex. 3,1,2,5,4",
"orderHint": "Entrez les numéros de pages séparés par des virgules dans l'ordre souhaité."
"orderHint": "Entrez chaque numéro de page exactement une fois, séparé par des virgules, dans l'ordre souhaité.",
"readingPageCount": "Lecture du nombre total de pages...",
"pageCount": "Pages détectées : {{count}}",
"pageCountFailed": "Impossible de lire le nombre de pages de ce PDF. Veuillez choisir un autre fichier.",
"orderInvalidFormat": "Utilisez uniquement des numéros de page séparés par des virgules, par exemple 3,1,2.",
"orderMustIncludeAllPages": "Incluez chaque page exactement une fois de 1 à {{count}}.",
"orderOutOfRange": "Pages hors plage : {{pages}}.",
"orderMissingPages": "Pages manquantes : {{pages}}.",
"orderDuplicatePages": "Pages en double : {{pages}}."
},
"extractPages": {
"title": "Extraire des pages PDF",
@@ -883,12 +891,12 @@
]
},
"removeWatermark": {
"whatItDoes": "Supprimez automatiquement les filigranes textuels des fichiers PDF. L'outil détecte et supprime les couches de texte en filigrane tout en préservant le contenu et la mise en page du reste du document.",
"howToUse": ["Téléchargez votre fichier PDF avec filigrane.", "L'outil détecte automatiquement les filigranes textuels.", "Cliquez sur Supprimer pour traiter le document.", "Téléchargez le PDF propre sans filigrane."],
"benefits": ["Détection automatique des filigranes", "Préserve le contenu et la mise en page du document", "Fonctionne avec les filigranes textuels", "Gratuit et sécurisé", "Aucune installation requise"],
"whatItDoes": "Supprimez automatiquement les filigranes textuels et les superpositions d'image prises en charge des fichiers PDF. L'outil détecte les blocs de filigrane amovibles tout en préservant le contenu et la mise en page du reste du document.",
"howToUse": ["Téléchargez votre fichier PDF avec filigrane.", "L'outil détecte automatiquement les filigranes textuels ou les superpositions d'image prises en charge.", "Cliquez sur Supprimer pour traiter le document.", "Téléchargez le PDF propre sans filigrane."],
"benefits": ["Détection automatique des filigranes", "Préserve le contenu et la mise en page du document", "Fonctionne avec les superpositions textuelles et d'image prises en charge", "Gratuit et sécurisé", "Aucune installation requise"],
"useCases": ["Nettoyer les versions brouillon pour la distribution finale", "Supprimer l'ancien branding des documents", "Préparer des copies propres pour l'archivage", "Supprimer les marques d'échantillon/d'essai des PDF achetés", "Nettoyer les documents numérisés des couches indésirables"],
"faq": [
{"q": "Cet outil peut-il supprimer tout type de filigrane ?", "a": "L'outil fonctionne mieux avec les filigranes textuels. Les filigranes basés sur des images peuvent nécessiter un traitement supplémentaire."},
{"q": "Cet outil peut-il supprimer tout type de filigrane ?", "a": "L'outil fonctionne mieux avec les filigranes textuels et les superpositions d'image prises en charge. Les filigranes profondément intégrés ou aplatis peuvent nécessiter un traitement supplémentaire."},
{"q": "La suppression du filigrane affectera-t-elle la qualité du document ?", "a": "Non, seul le texte du filigrane est supprimé. Tout le reste du contenu reste intact."},
{"q": "Est-il légal de supprimer des filigranes ?", "a": "Ne supprimez les filigranes que des documents que vous possédez ou pour lesquels vous avez l'autorisation de modification. Respectez les droits d'auteur et la propriété intellectuelle."}
]
@@ -927,14 +935,14 @@
]
},
"reorderPdf": {
"whatItDoes": "Réorganisez les pages d'un document PDF dans n'importe quel ordre. Spécifiez un ordre de pages personnalisé pour réorganiser votre document sans avoir à diviser et refusionner.",
"howToUse": ["Téléchargez votre document PDF.", "Saisissez le nouvel ordre des pages (ex. 3,1,2,5,4).", "Cliquez sur Réorganiser pour ordonner les pages.", "Téléchargez le PDF réorganisé."],
"benefits": ["Ordre de pages personnalisé avec une syntaxe simple", "Réorganisation sans division et fusion", "Fonctionne avec tout document PDF", "Gratuit avec traitement rapide", "Sans perte de qualité"],
"whatItDoes": "Réorganisez les pages d'un document PDF dans n'importe quel ordre. Spécifiez une permutation complète des pages pour réorganiser votre document sans avoir à diviser et refusionner.",
"howToUse": ["Téléchargez votre document PDF.", "Saisissez le nouvel ordre des pages en incluant chaque page exactement une fois (ex. 3,1,2,5,4).", "Cliquez sur Réorganiser pour ordonner les pages.", "Téléchargez le PDF réorganisé."],
"benefits": ["Ordre de pages personnalisé avec une syntaxe simple", "Évite la perte ou la duplication accidentelle de pages", "Fonctionne avec tout document PDF", "Gratuit avec traitement rapide", "Sans perte de qualité"],
"useCases": ["Déplacer une annexe au début du document", "Réorganiser une présentation pour un public différent", "Corriger l'ordre des pages dans les documents numérisés", "Créer des arrangements personnalisés à partir de PDF existants", "Réordonner des sections pour un nouveau flux de document"],
"faq": [
{"q": "Comment réorganiser les pages d'un PDF ?", "a": "Téléchargez votre PDF et saisissez le nouvel ordre des pages sous forme de numéros séparés par des virgules (ex. 3,1,2,5,4). Téléchargez le PDF réorganisé."},
{"q": "Puis-je dupliquer des pages dans le nouvel ordre ?", "a": "En général, vous spécifiez chaque numéro de page une fois dans l'ordre souhaité."},
{"q": "Que se passe-t-il si j'omets un numéro de page ?", "a": "Les pages omises n'apparaîtront pas dans la sortie, les supprimant effectivement du document."}
{"q": "Comment réorganiser les pages d'un PDF ?", "a": "Téléchargez votre PDF et saisissez le nouvel ordre des pages sous forme de numéros séparés par des virgules, en incluant chaque page exactement une fois (ex. 3,1,2,5,4). Téléchargez le PDF réorganisé."},
{"q": "Puis-je dupliquer des pages dans le nouvel ordre ?", "a": "Non. L'outil attend une permutation complète, donc chaque numéro de page doit apparaître exactement une fois."},
{"q": "Que se passe-t-il si j'omets un numéro de page ?", "a": "L'outil vous demandera de compléter l'ordre avant le traitement afin qu'aucune page ne soit supprimée par erreur."}
]
},
"extractPages": {