Як працювати з розширеннями JavaScript у .NET

Як працювати з розширеннями JavaScript у .NET

Aspose.PDF FOSS for .NET включає серверні реалізації функцій PDF JavaScript AF_Date_Format, AF_Number_Format та AF_Percent_Format через класи FieldDateTimeFormatter, FieldNumberCurrencyFormatter і FieldNumberPercentFormatter. Встановіть пакет за допомогою dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha і використовуйте ці класи для форматування значень полів AcroForm на сервері без потреби у JavaScript‑движку.

Покроковий посібник

Крок 1: Встановити пакет

Додайте Aspose.PDF FOSS у ваш проєкт:

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

Крок 2: Імпорт необхідних класів

using Aspose.Pdf.Annotations.JavascriptExtensions;

Крок 3: Форматування значення поля дати/часу

FieldDateTimeFormatter.Format(dateFormat, dateValue) перетворює рядок необробленої дати відповідно до шаблону формату дати в стилі Acrobat. Це відповідає функції PDF JavaScript AF_Date_Format.

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

Параметр dateFormat використовує токени формату дати Acrobat (наприклад, mm, dd, yyyy, HH, MM). Коли вхідний dateValue не може бути розпізнано, метод повертає порожній рядок.


Крок 4: Форматувати числове поле як валюту

FieldNumberCurrencyFormatter.Format(precision, sepStyle, negStyle, currencySymbol, isPrependCurrency, fieldValue) форматує числовий рядок як валютне значення. Це відповідає функції 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 – кількість десяткових знаків
  • sepStyle – стиль розділювача тисяч (0 = кома, 1 = крапка, 2 = без розділювача)
  • negStyle – стиль від’ємного числа (0 = дужки, 1 = мінус перед числом)
  • currencySymbol – рядок символу валюти
  • isPrependCurrency – true, щоб розмістити символ перед числом
  • fieldValue – необроблений числовий рядок для форматування

Крок 5: Форматувати числове поле як відсоток

FieldNumberPercentFormatter.Format(precision, sepStyle, isPrependPercent, fieldValue) форматує числовий рядок як відсоток, спочатку множачи вихідне значення на 100. Це відповідає функції PDF JavaScript AF_Percent_Format.

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

Параметри:

  • precision - кількість знаків після десяткової крапки
  • sepStyle - стиль розділювача тисяч (0 = кома, 1 = крапка, 2 = без)
  • isPrependPercent - true, щоб додати символ % на початок, false — щоб додати в кінець
  • fieldValue - необроблений числовий рядок (форматер множить на 100)

Загальні проблеми та виправлення

FieldDateTimeFormatter повертає порожній рядок
Це відбувається, коли аргумент dateValue не може бути розпарсений за шаблоном дати у dateFormat. Токени дати Acrobat відрізняються від форматних рядків .NET DateTime.

FieldNumberCurrencyFormatter генерує неправильний десятковий роздільник
Параметр sepStyle керує роздільником тисяч. Щоб використовувати крапку як роздільник тисяч, передайте sepStyle: 1.

FieldNumberPercentFormatter вивід у 100 разів занадто великий
Форматер множить вхідне значення на 100. Якщо ваш fieldValue вже представляє відсоток (наприклад, “87.5” замість “0.875”), поділіть на 100 перед викликом Format.

Простір імен не знайдено після встановлення пакета
Переконайтеся, що ви націлюєтеся на net8.0 або новішу версію. Простір імен JavascriptExtensions доступний лише в пакеті Aspose.Pdf.Foss.

NullReferenceException при порожньому fieldValue
Передача null або порожнього рядка як fieldValue спричинить виключення під час розбору. Перевірте вхідні дані перед викликом Format.

Часті запитання

Що означає «corresponds to AF_Date_Format»?

PDF AcroForm JavaScript використовує AF_Date_Format як вбудовану функцію форматування для полів дати. FieldDateTimeFormatter відтворює ту ж логіку форматування в .NET керованому коді, щоб ви могли застосовувати ті ж рядки форматування полів без виконання JavaScript.

Чи можу я використовувати ці форматери поза контекстом PDF‑документа?

Так. FieldDateTimeFormatter, FieldNumberCurrencyFormatter та FieldNumberPercentFormatter — це прості класи без залежності від екземпляра Document. Ви можете використовувати їх у будь‑якому контексті .NET 8+ як утилітні форматери.

У чому різниця між FieldNumberCurrencyFormatter та FieldNumberPercentFormatter?

FieldNumberCurrencyFormatter форматує число як грошову суму без множення. FieldNumberPercentFormatter множить вхідне значення на 100 і додає або ставить перед ним символ відсотка.

Чи є спосіб ланцюжити кілька форматувальників?

Вбудоване ланцюжкове виконання не передбачено. Застосовуйте форматери послідовно у коді.

Чи потрібен повний PDF-документ, щоб використовувати ці класи?

Ні. Форматери працюють з простими рядками та повертають відформатовані рядки. Вони не вимагають відкритого Document екземпляра.

Див. також

 Українська