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": "Números de Página",
"subtitle": "Insira números de página no seu documento."
},
"addPageLabels": {
"name": "Adicionar rótulos de página",
"subtitle": "Aplique rótulos de página PDF com números romanos, prefixos e valores iniciais personalizados.",
"uploadHint": "Arquivo PDF",
"howLabelsWorkTitle": "Como os rótulos funcionam",
"howLabelsWorkStep1": "Deixe Intervalo de páginas vazio para rotular todas as páginas.",
"howLabelsWorkStep2": "Use estilos como números romanos para as páginas iniciais e numeração decimal para o corpo principal.",
"howLabelsWorkStep3": "Use Prefixo com Valor inicial 0 para criar rótulos como A-0, A-1 e A-2.",
"howLabelsWorkStep4": "Ative a progressão quando uma regra usar um intervalo descontínuo como 1-9,30-40 ou páginas ímpares.",
"labelRulesTitle": "Regras de rótulo",
"addRule": "Adicionar regra",
"removeExistingLabels": "Remover rótulos de página existentes antes de aplicar estas regras",
"cpdfNote": "Esta ferramenta usa o CoherentPDF no seu navegador. Se o CoherentPDF não estiver configurado, você será solicitado a configurá-lo nas Configurações WASM.",
"processButton": "Adicionar rótulos de página",
"howItWorksUploadTitle": "Enviar arquivo",
"howItWorksUploadDescription": "Escolha o PDF que você deseja rotular novamente.",
"howItWorksDefineTitle": "Definir regras",
"howItWorksDefineDescription": "Configure uma ou mais regras de rótulo de página com intervalos de páginas, estilos, prefixos e valores iniciais.",
"howItWorksDownloadTitle": "Baixar",
"howItWorksDownloadDescription": "Salve o PDF atualizado com seus novos rótulos de página.",
"relatedToolsTitle": "Ferramentas PDF relacionadas",
"faqWhatIsQuestion": "O que é um rótulo de página?",
"faqWhatIsAnswer": "Um rótulo de página é a numeração mostrada pelos leitores de PDF nas miniaturas, na navegação de páginas e nas caixas de diálogo de impressão. Ele não imprime novo texto na própria página.",
"faqMixQuestion": "Posso misturar números romanos e números normais?",
"faqMixAnswer": "Sim. Adicione várias regras, como 1-4 com LowercaseRoman e 5-20 com DecimalArabic.",
"faqPrivacyQuestion": "Meus arquivos permanecem privados?",
"faqPrivacyAnswer": "Sim. O processamento acontece no seu navegador usando CoherentPDF WASM. Seu PDF não sai do seu dispositivo.",
"invalidFileTitle": "Arquivo inválido",
"invalidFileMessage": "Envie um arquivo PDF válido.",
"loadingPdf": "Carregando PDF...",
"protectedPdfTitle": "PDF protegido",
"protectedPdfMessage": "Este PDF está protegido por senha. Use primeiro a ferramenta Descriptografar ou Alterar permissões.",
"loadErrorMessage": "Falha ao carregar o arquivo PDF. O arquivo pode ser inválido, estar corrompido ou protegido por senha.",
"fileMeta": "{{size}} • {{count}} páginas",
"ruleTitle": "Regra de rótulo {{number}}",
"pageRangeLabel": "Intervalo de páginas",
"pageRangePlaceholder": "Todas as páginas, ou por ex. 1-4, 7, ímpares",
"labelStyleLabel": "Estilo do rótulo",
"labelPrefixLabel": "Prefixo do rótulo",
"labelPrefixPlaceholder": "Prefixo opcional, ex. A-",
"startValueLabel": "Valor inicial",
"continueNumbering": "Continuar a numeração em intervalos descontínuos",
"examplesNote": "Exemplos: 1-4 para páginas iniciais em algarismos romanos, 15-20 com prefixo A- e valor inicial 0, ou páginas ímpares com progressão ativada.",
"uploadFirstMessage": "Envie primeiro um arquivo PDF.",
"applyingLabels": "Aplicando rótulos de página...",
"invalidRangeMessage": "A regra {{number}} tem um intervalo de páginas inválido: {{range}}",
"allPages": "todas as páginas",
"emptyOutputMessage": "O CoherentPDF produziu um arquivo vazio.",
"successMessage": "Rótulos de página adicionados com sucesso!",
"processErrorMessage": "Não foi possível adicionar os rótulos de página.",
"styleOptions": {
"DecimalArabic": "Números decimais",
"LowercaseRoman": "Números romanos minúsculos",
"UppercaseRoman": "Números romanos maiúsculos",
"LowercaseLetters": "Letras minúsculas",
"UppercaseLetters": "Letras maiúsculas",
"NoLabelPrefixOnly": "Somente prefixo sem numeração"
}
},
"batesNumbering": {
"name": "Numeração Bates",
"subtitle": "Adicionar números Bates sequenciais em um ou mais arquivos PDF."