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": "Numéros de page",
"subtitle": "Insérer une numérotation dans le document."
},
"addPageLabels": {
"name": "Ajouter des étiquettes de page",
"subtitle": "Appliquer des étiquettes de page PDF avec chiffres romains, préfixes et valeurs de départ personnalisées.",
"uploadHint": "Fichier PDF",
"howLabelsWorkTitle": "Comment fonctionnent les étiquettes",
"howLabelsWorkStep1": "Laissez la plage de pages vide pour étiqueter toutes les pages.",
"howLabelsWorkStep2": "Utilisez des styles comme les chiffres romains pour les pages liminaires et la numérotation décimale pour le corps principal.",
"howLabelsWorkStep3": "Utilisez un préfixe avec une valeur de départ de 0 pour créer des étiquettes comme A-0, A-1, A-2.",
"howLabelsWorkStep4": "Activez la progression lorsqu'une règle utilise une plage discontinue comme 1-9,30-40 ou les pages impaires.",
"labelRulesTitle": "Règles d'étiquetage",
"addRule": "Ajouter une règle",
"removeExistingLabels": "Supprimer les étiquettes de page existantes avant d'appliquer ces règles",
"cpdfNote": "Cet outil utilise CoherentPDF dans votre navigateur. Si CoherentPDF n'est pas configuré, il vous sera demandé de le configurer dans les paramètres WASM.",
"processButton": "Ajouter des étiquettes de page",
"howItWorksUploadTitle": "Téléverser le fichier",
"howItWorksUploadDescription": "Choisissez le PDF que vous voulez réétiqueter.",
"howItWorksDefineTitle": "Définir les règles",
"howItWorksDefineDescription": "Configurez une ou plusieurs règles d'étiquetage avec des plages de pages, des styles, des préfixes et des valeurs de départ.",
"howItWorksDownloadTitle": "Télécharger",
"howItWorksDownloadDescription": "Enregistrez le PDF mis à jour avec ses nouvelles étiquettes de page.",
"relatedToolsTitle": "Outils PDF associés",
"faqWhatIsQuestion": "Qu'est-ce qu'une étiquette de page ?",
"faqWhatIsAnswer": "Une étiquette de page est la numérotation affichée par les lecteurs PDF dans les miniatures, la navigation entre les pages et les boîtes de dialogue d'impression. Elle n'imprime pas de nouveau texte sur la page elle-même.",
"faqMixQuestion": "Puis-je mélanger chiffres romains et nombres classiques ?",
"faqMixAnswer": "Oui. Ajoutez plusieurs règles, par exemple 1-4 avec LowercaseRoman et 5-20 avec DecimalArabic.",
"faqPrivacyQuestion": "Mes fichiers restent-ils privés ?",
"faqPrivacyAnswer": "Oui. Le traitement s'effectue dans votre navigateur avec CoherentPDF WASM. Votre PDF ne quitte pas votre appareil.",
"invalidFileTitle": "Fichier invalide",
"invalidFileMessage": "Veuillez téléverser un fichier PDF valide.",
"loadingPdf": "Chargement du PDF...",
"protectedPdfTitle": "PDF protégé",
"protectedPdfMessage": "Ce PDF est protégé par mot de passe. Veuillez d'abord utiliser l'outil Déchiffrer ou Modifier les autorisations.",
"loadErrorMessage": "Impossible de charger le fichier PDF. Le fichier est peut-être invalide, corrompu ou protégé par mot de passe.",
"fileMeta": "{{size}} • {{count}} pages",
"ruleTitle": "Règle d'étiquetage {{number}}",
"pageRangeLabel": "Plage de pages",
"pageRangePlaceholder": "Toutes les pages, ou par ex. 1-4, 7, impaires",
"labelStyleLabel": "Style d'étiquette",
"labelPrefixLabel": "Préfixe d'étiquette",
"labelPrefixPlaceholder": "Préfixe facultatif, par ex. A-",
"startValueLabel": "Valeur de départ",
"continueNumbering": "Continuer la numérotation sur des plages discontinues",
"examplesNote": "Exemples : 1-4 pour un avant-propos en chiffres romains, 15-20 avec le préfixe A- et la valeur de départ 0, ou les pages impaires avec progression activée.",
"uploadFirstMessage": "Veuillez d'abord téléverser un fichier PDF.",
"applyingLabels": "Application des étiquettes de page...",
"invalidRangeMessage": "La règle {{number}} a une plage de pages invalide : {{range}}",
"allPages": "toutes les pages",
"emptyOutputMessage": "CoherentPDF a produit un fichier vide.",
"successMessage": "Les étiquettes de page ont été ajoutées avec succès !",
"processErrorMessage": "Impossible d'ajouter les étiquettes de page.",
"styleOptions": {
"DecimalArabic": "Nombres décimaux",
"LowercaseRoman": "Chiffres romains minuscules",
"UppercaseRoman": "Chiffres romains majuscules",
"LowercaseLetters": "Lettres minuscules",
"UppercaseLetters": "Lettres majuscules",
"NoLabelPrefixOnly": "Préfixe seul sans numérotation"
}
},
"batesNumbering": {
"name": "Numérotation Bates",
"subtitle": "Ajouter des numéros Bates séquentiels sur un ou plusieurs fichiers PDF."