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": "Sidnummer",
"subtitle": "Infoga sidnummer i ditt dokument."
},
"addPageLabels": {
"name": "Lägg till sidetiketter",
"subtitle": "Använd PDF-sidetiketter med romerska siffror, prefix och anpassade startvärden.",
"uploadHint": "PDF-fil",
"howLabelsWorkTitle": "Så fungerar etiketter",
"howLabelsWorkStep1": "Lämna Sidintervall tomt för att märka alla sidor.",
"howLabelsWorkStep2": "Använd stilar som romerska siffror för inledningen och decimalnumrering för huvuddelen.",
"howLabelsWorkStep3": "Använd Prefix med Startvärde 0 för att skapa etiketter som A-0, A-1 och A-2.",
"howLabelsWorkStep4": "Aktivera fortlöpning när en regel använder ett osammanhängande intervall som 1-9,30-40 eller udda sidor.",
"labelRulesTitle": "Etikettregler",
"addRule": "Lägg till regel",
"removeExistingLabels": "Ta bort befintliga sidetiketter innan dessa regler tillämpas",
"cpdfNote": "Det här verktyget använder CoherentPDF i din webbläsare. Om CoherentPDF inte är konfigurerat blir du ombedd att ställa in det i WASM-inställningar.",
"processButton": "Lägg till sidetiketter",
"howItWorksUploadTitle": "Ladda upp fil",
"howItWorksUploadDescription": "Välj PDF-filen du vill märka om.",
"howItWorksDefineTitle": "Definiera regler",
"howItWorksDefineDescription": "Ställ in en eller flera regler för sidetiketter med sidintervall, stilar, prefix och startvärden.",
"howItWorksDownloadTitle": "Ladda ner",
"howItWorksDownloadDescription": "Spara den uppdaterade PDF-filen med sina nya sidetiketter.",
"relatedToolsTitle": "Relaterade PDF-verktyg",
"faqWhatIsQuestion": "Vad är en sidetikett?",
"faqWhatIsAnswer": "En sidetikett är den numrering som PDF-läsare visar i miniatyrer, sidnavigering och utskriftsdialoger. Den skriver inte ut ny text på själva sidan.",
"faqMixQuestion": "Kan jag blanda romerska siffror och vanliga siffror?",
"faqMixAnswer": "Ja. Lägg till flera regler, till exempel 1-4 med LowercaseRoman och 5-20 med DecimalArabic.",
"faqPrivacyQuestion": "Förblir mina filer privata?",
"faqPrivacyAnswer": "Ja. Bearbetningen sker i din webbläsare med CoherentPDF WASM. Din PDF lämnar inte din enhet.",
"invalidFileTitle": "Ogiltig fil",
"invalidFileMessage": "Ladda upp en giltig PDF-fil.",
"loadingPdf": "Läser in PDF...",
"protectedPdfTitle": "Skyddad PDF",
"protectedPdfMessage": "Den här PDF-filen är lösenordsskyddad. Använd först verktyget Dekryptera eller Ändra behörigheter.",
"loadErrorMessage": "Det gick inte att läsa in PDF-filen. Filen kan vara ogiltig, skadad eller lösenordsskyddad.",
"fileMeta": "{{size}} • {{count}} sidor",
"ruleTitle": "Etikettregel {{number}}",
"pageRangeLabel": "Sidintervall",
"pageRangePlaceholder": "Alla sidor, eller t.ex. 1-4, 7, udda",
"labelStyleLabel": "Etikettstil",
"labelPrefixLabel": "Etikettprefix",
"labelPrefixPlaceholder": "Valfritt prefix, t.ex. A-",
"startValueLabel": "Startvärde",
"continueNumbering": "Fortsätt numreringen över osammanhängande intervall",
"examplesNote": "Exempel: 1-4 för inledande sidor med romerska siffror, 15-20 med prefixet A- och startvärde 0, eller udda sidor med fortlöpning aktiverad.",
"uploadFirstMessage": "Ladda först upp en PDF-fil.",
"applyingLabels": "Tillämpa sidetiketter...",
"invalidRangeMessage": "Regel {{number}} har ett ogiltigt sidintervall: {{range}}",
"allPages": "alla sidor",
"emptyOutputMessage": "CoherentPDF skapade en tom fil.",
"successMessage": "Sidetiketter lades till!",
"processErrorMessage": "Det gick inte att lägga till sidetiketter.",
"styleOptions": {
"DecimalArabic": "Decimala siffror",
"LowercaseRoman": "Små romerska siffror",
"UppercaseRoman": "Stora romerska siffror",
"LowercaseLetters": "Små bokstäver",
"UppercaseLetters": "Stora bokstäver",
"NoLabelPrefixOnly": "Endast prefix utan nummer"
}
},
"batesNumbering": {
"name": "Bates-numrering",
"subtitle": "Lägg till sekventiella Bates-nummer över en eller flera PDF-filer."