Cách làm việc với các tiện ích mở rộng JavaScript trong .NET

Cách làm việc với các tiện ích mở rộng JavaScript trong .NET

Aspose.PDF FOSS for .NET bao gồm các triển khai phía máy chủ của các hàm PDF JavaScript AF_Date_Format, AF_Number_Format và AF_Percent_Format thông qua các lớp FieldDateTimeFormatter, FieldNumberCurrencyFormatterFieldNumberPercentFormatter. Cài đặt gói bằng dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha và sử dụng các lớp này để định dạng giá trị trường AcroForm trên máy chủ mà không yêu cầu một engine JavaScript.

Hướng Dẫn Từng Bước

Bước 1: Cài đặt gói

Thêm Aspose.PDF FOSS vào dự án của bạn:

dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha

Bước 2: Nhập các lớp cần thiết

using Aspose.Pdf.Annotations.JavascriptExtensions;

Bước 3: Định dạng giá trị trường Ngày/Giờ

FieldDateTimeFormatter.Format(dateFormat, dateValue) chuyển đổi một chuỗi ngày thô theo mẫu định dạng ngày kiểu Acrobat. Điều này tương ứng với hàm AF_Date_Format của PDF JavaScript.

string formatted = FieldDateTimeFormatter.Format("mm/dd/yyyy", "2026-06-11");

Tham số dateFormat sử dụng các token định dạng ngày của Acrobat (ví dụ: mm, dd, yyyy, HH, MM). Khi đầu vào dateValue không thể phân tích, phương thức trả về một chuỗi rỗng.


Bước 4: Định dạng trường số dưới dạng tiền tệ

FieldNumberCurrencyFormatter.Format(precision, sepStyle, negStyle, currencySymbol, isPrependCurrency, fieldValue) định dạng một chuỗi số thành giá trị tiền tệ. Điều này tương ứng với hàm PDF JavaScript AF_Number_Format.

var currencyFormatter = new FieldNumberCurrencyFormatter();
string formatted = currencyFormatter.Format(
    precision: 2,
    sepStyle: 0,
    negStyle: 0,
    currencySymbol: "$",
    isPrependCurrency: true,
    fieldValue: "1234.5");
  • precision - số chữ số thập phân
  • sepStyle - kiểu dấu phân cách hàng nghìn (0 = dấu phẩy, 1 = dấu chấm, 2 = không có)
  • negStyle - kiểu số âm (0 = ngoặc đơn, 1 = tiền tố dấu trừ)
  • currencySymbol - chuỗi ký hiệu tiền tệ
  • isPrependCurrency - đúng để đặt ký hiệu trước số
  • fieldValue - chuỗi số thô để định dạng

Bước 5: Định dạng trường số dưới dạng phần trăm

FieldNumberPercentFormatter.Format(precision, sepStyle, isPrependPercent, fieldValue) định dạng một chuỗi số thành phần trăm, trước tiên nhân giá trị thô với 100. Điều này tương ứng với hàm PDF JavaScript AF_Percent_Format.

var percentFormatter = new FieldNumberPercentFormatter();
string formatted = percentFormatter.Format(
    precision: 1,
    sepStyle: 0,
    isPrependPercent: false,
    fieldValue: "0.875");

Tham số:

  • precision - số chữ số thập phân sau dấu thập phân
  • sepStyle - kiểu phân tách hàng nghìn (0 = dấu phẩy, 1 = dấu chấm, 2 = không có)
  • isPrependPercent - true để đặt ký hiệu % ở đầu, false để đặt ở cuối
  • fieldValue - chuỗi số thô (bộ định dạng nhân với 100)

Các vấn đề thường gặp và cách khắc phục

FieldDateTimeFormatter trả về chuỗi rỗng
Điều này xảy ra khi đối số dateValue không thể được phân tích theo mẫu ngày trong dateFormat. Các token ngày của Acrobat khác với chuỗi định dạng .NET DateTime.

FieldNumberCurrencyFormatter tạo ra dấu phân cách thập phân sai
Tham số sepStyle kiểm soát dấu phân cách hàng nghìn. Để sử dụng dấu chấm làm dấu phân cách hàng nghìn, truyền sepStyle: 1.

FieldNumberPercentFormatter đầu ra lớn hơn 100 lần
Bộ định dạng nhân giá trị đầu vào với 100. Nếu fieldValue của bạn đã đại diện cho phần trăm (ví dụ, “87.5” thay vì “0.875”), hãy chia cho 100 trước khi gọi Format.

Không tìm thấy không gian tên sau khi cài đặt gói
Đảm bảo bạn đang nhắm mục tiêu net8.0 hoặc phiên bản mới hơn. Không gian tên JavascriptExtensions chỉ có sẵn trong gói Aspose.Pdf.Foss.

NullReferenceException khi fieldValue trống Việc truyền null hoặc một chuỗi rỗng làm fieldValue sẽ gây ra một ngoại lệ phân tích. Hãy xác thực đầu vào trước khi gọi Format.

Câu hỏi thường gặp

Câu “corresponds to AF_Date_Format” có nghĩa là gì?

PDF AcroForm JavaScript sử dụng AF_Date_Format làm hàm định dạng tích hợp cho các trường ngày. FieldDateTimeFormatter tái tạo cùng logic định dạng trong mã .NET quản lý để bạn có thể áp dụng cùng các chuỗi định dạng trường mà không cần thực thi JavaScript.

Tôi có thể sử dụng các bộ định dạng này ngoài ngữ cảnh tài liệu PDF không?

Yes. FieldDateTimeFormatter, FieldNumberCurrencyFormatter, và FieldNumberPercentFormatter là các lớp đơn giản không phụ thuộc vào một thể hiện Document. Bạn có thể sử dụng chúng trong bất kỳ ngữ cảnh .NET 8+ nào như các bộ định dạng tiện ích.

Sự khác nhau giữa FieldNumberCurrencyFormatter và FieldNumberPercentFormatter là gì?

FieldNumberCurrencyFormatter định dạng một số thành số tiền mà không nhân. FieldNumberPercentFormatter nhân đầu vào với 100 và thêm hoặc đặt trước ký hiệu phần trăm.

Có cách nào để nối chuỗi nhiều bộ định dạng không?

Không có chuỗi nối tích hợp sẵn. Áp dụng các bộ định dạng tuần tự trong mã.

Tôi có cần toàn bộ tài liệu PDF để sử dụng các lớp này không?

Không. Các bộ định dạng hoạt động trên các chuỗi thuần và trả về các chuỗi đã định dạng. Chúng không yêu cầu một thể hiện Document mở.

Xem thêm

 Tiếng Việt