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": "Nomor Halaman",
"subtitle": "Sisipkan nomor halaman ke dokumen Anda."
},
"addPageLabels": {
"name": "Tambahkan label halaman",
"subtitle": "Terapkan label halaman PDF dengan angka Romawi, prefiks, dan nilai awal khusus.",
"uploadHint": "File PDF",
"howLabelsWorkTitle": "Cara kerja label",
"howLabelsWorkStep1": "Biarkan Rentang Halaman kosong untuk memberi label pada semua halaman.",
"howLabelsWorkStep2": "Gunakan gaya seperti angka Romawi untuk halaman awal dan penomoran desimal untuk isi utama.",
"howLabelsWorkStep3": "Gunakan Prefiks dengan Nilai Awal 0 untuk membuat label seperti A-0, A-1, A-2.",
"howLabelsWorkStep4": "Aktifkan progres saat satu aturan menggunakan rentang terputus seperti 1-9,30-40 atau halaman ganjil.",
"labelRulesTitle": "Aturan Label",
"addRule": "Tambah Aturan",
"removeExistingLabels": "Hapus label halaman yang ada sebelum menerapkan aturan ini",
"cpdfNote": "Alat ini menggunakan CoherentPDF di browser Anda. Jika CoherentPDF belum dikonfigurasi, Anda akan diminta menyiapkannya di Pengaturan WASM.",
"processButton": "Tambahkan label halaman",
"howItWorksUploadTitle": "Unggah File",
"howItWorksUploadDescription": "Pilih PDF yang ingin Anda beri label ulang.",
"howItWorksDefineTitle": "Tentukan Aturan",
"howItWorksDefineDescription": "Atur satu atau lebih aturan label halaman dengan rentang halaman, gaya, prefiks, dan nilai awal.",
"howItWorksDownloadTitle": "Unduh",
"howItWorksDownloadDescription": "Simpan PDF yang telah diperbarui dengan label halamannya yang baru.",
"relatedToolsTitle": "Alat PDF Terkait",
"faqWhatIsQuestion": "Apa itu label halaman?",
"faqWhatIsAnswer": "Label halaman adalah penomoran yang ditampilkan pembaca PDF di thumbnail, navigasi halaman, dan dialog cetak. Ini tidak mencetak teks baru ke halaman itu sendiri.",
"faqMixQuestion": "Bisakah saya mencampur angka Romawi dan angka biasa?",
"faqMixAnswer": "Ya. Tambahkan beberapa aturan, misalnya 1-4 dengan LowercaseRoman dan 5-20 dengan DecimalArabic.",
"faqPrivacyQuestion": "Apakah file saya tetap pribadi?",
"faqPrivacyAnswer": "Ya. Pemrosesan terjadi di browser Anda menggunakan CoherentPDF WASM. PDF Anda tidak meninggalkan perangkat Anda.",
"invalidFileTitle": "File Tidak Valid",
"invalidFileMessage": "Silakan unggah file PDF yang valid.",
"loadingPdf": "Memuat PDF...",
"protectedPdfTitle": "PDF Terproteksi",
"protectedPdfMessage": "PDF ini dilindungi kata sandi. Gunakan alat Dekripsi atau Ubah Izin terlebih dahulu.",
"loadErrorMessage": "Gagal memuat file PDF. File mungkin tidak valid, rusak, atau dilindungi kata sandi.",
"fileMeta": "{{size}} • {{count}} halaman",
"ruleTitle": "Aturan Label {{number}}",
"pageRangeLabel": "Rentang Halaman",
"pageRangePlaceholder": "Semua halaman, atau mis. 1-4, 7, ganjil",
"labelStyleLabel": "Gaya Label",
"labelPrefixLabel": "Prefiks Label",
"labelPrefixPlaceholder": "Prefiks opsional, mis. A-",
"startValueLabel": "Nilai Awal",
"continueNumbering": "Lanjutkan penomoran di rentang yang terputus",
"examplesNote": "Contoh: 1-4 untuk bagian depan dengan angka Romawi, 15-20 dengan prefiks A- dan nilai awal 0, atau halaman ganjil dengan progres diaktifkan.",
"uploadFirstMessage": "Silakan unggah file PDF terlebih dahulu.",
"applyingLabels": "Menerapkan label halaman...",
"invalidRangeMessage": "Aturan {{number}} memiliki rentang halaman yang tidak valid: {{range}}",
"allPages": "semua halaman",
"emptyOutputMessage": "CoherentPDF menghasilkan file kosong.",
"successMessage": "Label halaman berhasil ditambahkan!",
"processErrorMessage": "Tidak dapat menambahkan label halaman.",
"styleOptions": {
"DecimalArabic": "Angka desimal",
"LowercaseRoman": "Angka Romawi huruf kecil",
"UppercaseRoman": "Angka Romawi huruf besar",
"LowercaseLetters": "Huruf kecil",
"UppercaseLetters": "Huruf besar",
"NoLabelPrefixOnly": "Hanya prefiks tanpa nomor"
}
},
"batesNumbering": {
"name": "Penomoran Bates",
"subtitle": "Tambahkan nomor Bates berurutan pada satu atau lebih file PDF."