Как работать с расширениями 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 on empty 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.

См. также

 Русский