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": "Số trang",
"subtitle": "Chèn số trang vào tài liệu của bạn."
},
"addPageLabels": {
"name": "Thêm nhãn trang",
"subtitle": "Áp dụng nhãn trang PDF với số La Mã, tiền tố và giá trị bắt đầu tùy chỉnh.",
"uploadHint": "Tệp PDF",
"howLabelsWorkTitle": "Cách nhãn hoạt động",
"howLabelsWorkStep1": "Để trống Phạm vi trang để gắn nhãn cho tất cả các trang.",
"howLabelsWorkStep2": "Dùng các kiểu như số La Mã cho phần mở đầu và đánh số thập phân cho phần nội dung chính.",
"howLabelsWorkStep3": "Dùng Tiền tố với Giá trị bắt đầu 0 để tạo các nhãn như A-0, A-1, A-2.",
"howLabelsWorkStep4": "Bật tiến trình khi một quy tắc dùng phạm vi rời rạc như 1-9,30-40 hoặc các trang lẻ.",
"labelRulesTitle": "Quy tắc nhãn",
"addRule": "Thêm quy tắc",
"removeExistingLabels": "Xóa nhãn trang hiện có trước khi áp dụng các quy tắc này",
"cpdfNote": "Công cụ này dùng CoherentPDF trong trình duyệt của bạn. Nếu CoherentPDF chưa được cấu hình, bạn sẽ được nhắc thiết lập trong Cài đặt WASM.",
"processButton": "Thêm nhãn trang",
"howItWorksUploadTitle": "Tải tệp lên",
"howItWorksUploadDescription": "Chọn tệp PDF mà bạn muốn gắn nhãn lại.",
"howItWorksDefineTitle": "Xác định quy tắc",
"howItWorksDefineDescription": "Thiết lập một hoặc nhiều quy tắc nhãn trang với phạm vi trang, kiểu, tiền tố và giá trị bắt đầu.",
"howItWorksDownloadTitle": "Tải xuống",
"howItWorksDownloadDescription": "Lưu tệp PDF đã cập nhật với các nhãn trang mới.",
"relatedToolsTitle": "Công cụ PDF liên quan",
"faqWhatIsQuestion": "Nhãn trang là gì?",
"faqWhatIsAnswer": "Nhãn trang là kiểu đánh số mà trình đọc PDF hiển thị trong hình thu nhỏ, điều hướng trang và hộp thoại in. Nó không in thêm văn bản mới lên chính trang đó.",
"faqMixQuestion": "Tôi có thể trộn số La Mã và số thường không?",
"faqMixAnswer": "Có. Hãy thêm nhiều quy tắc, chẳng hạn 1-4 với LowercaseRoman và 5-20 với DecimalArabic.",
"faqPrivacyQuestion": "Các tệp của tôi có được giữ riêng tư không?",
"faqPrivacyAnswer": "Có. Việc xử lý diễn ra trong trình duyệt của bạn bằng CoherentPDF WASM. Tệp PDF của bạn không rời khỏi thiết bị.",
"invalidFileTitle": "Tệp không hợp lệ",
"invalidFileMessage": "Vui lòng tải lên một tệp PDF hợp lệ.",
"loadingPdf": "Đang tải PDF...",
"protectedPdfTitle": "PDF được bảo vệ",
"protectedPdfMessage": "Tệp PDF này được bảo vệ bằng mật khẩu. Hãy dùng công cụ Giải mã hoặc Thay đổi quyền trước.",
"loadErrorMessage": "Không thể tải tệp PDF. Tệp có thể không hợp lệ, bị hỏng hoặc được bảo vệ bằng mật khẩu.",
"fileMeta": "{{size}} • {{count}} trang",
"ruleTitle": "Quy tắc nhãn {{number}}",
"pageRangeLabel": "Phạm vi trang",
"pageRangePlaceholder": "Tất cả các trang, hoặc ví dụ 1-4, 7, lẻ",
"labelStyleLabel": "Kiểu nhãn",
"labelPrefixLabel": "Tiền tố nhãn",
"labelPrefixPlaceholder": "Tiền tố tùy chọn, ví dụ A-",
"startValueLabel": "Giá trị bắt đầu",
"continueNumbering": "Tiếp tục đánh số qua các phạm vi rời rạc",
"examplesNote": "Ví dụ: 1-4 cho phần mở đầu bằng số La Mã, 15-20 với tiền tố A- và giá trị bắt đầu 0, hoặc các trang lẻ khi đã bật tiến trình.",
"uploadFirstMessage": "Vui lòng tải lên tệp PDF trước.",
"applyingLabels": "Đang áp dụng nhãn trang...",
"invalidRangeMessage": "Quy tắc {{number}} có phạm vi trang không hợp lệ: {{range}}",
"allPages": "tất cả các trang",
"emptyOutputMessage": "CoherentPDF đã tạo ra một tệp rỗng.",
"successMessage": "Đã thêm nhãn trang thành công!",
"processErrorMessage": "Không thể thêm nhãn trang.",
"styleOptions": {
"DecimalArabic": "Số thập phân",
"LowercaseRoman": "Số La Mã thường",
"UppercaseRoman": "Số La Mã hoa",
"LowercaseLetters": "Chữ thường",
"UppercaseLetters": "Chữ hoa",
"NoLabelPrefixOnly": "Chỉ tiền tố, không đánh số"
}
},
"batesNumbering": {
"name": "Đánh số Bates",
"subtitle": "Thêm số Bates tuần tự trên một hoặc nhiều tệp PDF."