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": "Sidetal",
"subtitle": "Indsæt sidetal i dokumentet."
},
"addPageLabels": {
"name": "Tilføj sideetiketter",
"subtitle": "Anvend PDF-sideetiketter med romertal, præfikser og brugerdefinerede startværdier.",
"uploadHint": "PDF-fil",
"howLabelsWorkTitle": "Sådan virker etiketter",
"howLabelsWorkStep1": "Lad sideområde stå tomt for at mærke alle sider.",
"howLabelsWorkStep2": "Brug stilarter som romertal til forord og decimalnummerering til hovedindholdet.",
"howLabelsWorkStep3": "Brug præfiks med startværdi 0 for at lave etiketter som A-0, A-1, A-2.",
"howLabelsWorkStep4": "Aktivér fortsættelse, når én regel bruger et usammenhængende område som 1-9,30-40 eller ulige sider.",
"labelRulesTitle": "Etiketregler",
"addRule": "Tilføj regel",
"removeExistingLabels": "Fjern eksisterende sideetiketter, før disse regler anvendes",
"cpdfNote": "Dette værktøj bruger CoherentPDF i din browser. Hvis CoherentPDF ikke er konfigureret, bliver du bedt om at sætte det op i WASM-indstillinger.",
"processButton": "Tilføj sideetiketter",
"howItWorksUploadTitle": "Upload fil",
"howItWorksUploadDescription": "Vælg den PDF, du vil ommærke.",
"howItWorksDefineTitle": "Definér regler",
"howItWorksDefineDescription": "Opsæt en eller flere regler for sideetiketter med sideområder, stilarter, præfikser og startværdier.",
"howItWorksDownloadTitle": "Download",
"howItWorksDownloadDescription": "Gem den opdaterede PDF med sine nye sideetiketter.",
"relatedToolsTitle": "Relaterede PDF-værktøjer",
"faqWhatIsQuestion": "Hvad er en sideetiket?",
"faqWhatIsAnswer": "En sideetiket er den nummerering, som PDF-læsere viser i miniaturevisninger, sidenavigation og udskriftsdialoger. Den tilføjer ikke ny tekst på selve siden.",
"faqMixQuestion": "Kan jeg blande romertal og almindelige tal?",
"faqMixAnswer": "Ja. Tilføj flere regler, f.eks. 1-4 med LowercaseRoman og 5-20 med DecimalArabic.",
"faqPrivacyQuestion": "Forbliver mine filer private?",
"faqPrivacyAnswer": "Ja. Behandlingen sker i din browser med CoherentPDF WASM. Din PDF forlader ikke din enhed.",
"invalidFileTitle": "Ugyldig fil",
"invalidFileMessage": "Upload venligst en gyldig PDF-fil.",
"loadingPdf": "Indlæser PDF...",
"protectedPdfTitle": "Beskyttet PDF",
"protectedPdfMessage": "Denne PDF er adgangskodebeskyttet. Brug først værktøjet Dekryptér eller Ændr tilladelser.",
"loadErrorMessage": "PDF-filen kunne ikke indlæses. Filen kan være ugyldig, beskadiget eller adgangskodebeskyttet.",
"fileMeta": "{{size}} • {{count}} sider",
"ruleTitle": "Etiketregel {{number}}",
"pageRangeLabel": "Sideområde",
"pageRangePlaceholder": "Alle sider, eller f.eks. 1-4, 7, ulige",
"labelStyleLabel": "Etiketstil",
"labelPrefixLabel": "Etiketpræfiks",
"labelPrefixPlaceholder": "Valgfrit præfiks, f.eks. A-",
"startValueLabel": "Startværdi",
"continueNumbering": "Fortsæt nummerering på tværs af usammenhængende områder",
"examplesNote": "Eksempler: 1-4 til romertal i forord, 15-20 med præfikset A- og startværdi 0, eller ulige sider med fortsættelse aktiveret.",
"uploadFirstMessage": "Upload først en PDF-fil.",
"applyingLabels": "Anvender sideetiketter...",
"invalidRangeMessage": "Regel {{number}} har et ugyldigt sideområde: {{range}}",
"allPages": "alle sider",
"emptyOutputMessage": "CoherentPDF producerede en tom fil.",
"successMessage": "Sideetiketter blev tilføjet!",
"processErrorMessage": "Kunne ikke tilføje sideetiketter.",
"styleOptions": {
"DecimalArabic": "Decimaltal",
"LowercaseRoman": "Små romertal",
"UppercaseRoman": "Store romertal",
"LowercaseLetters": "Små bogstaver",
"UppercaseLetters": "Store bogstaver",
"NoLabelPrefixOnly": "Kun præfiks uden nummer"
}
},
"batesNumbering": {
"name": "Bates-nummerering",
"subtitle": "Tilføj sekventielle Bates-numre på tværs af en eller flere PDF-filer."