Cómo trabajar con extensiones de JavaScript en .NET

Cómo trabajar con extensiones de JavaScript en .NET

Aspose.PDF FOSS for .NET incluye implementaciones del lado del servidor de las funciones de JavaScript PDF AF_Date_Format, AF_Number_Format y AF_Percent_Format a través de las clases FieldDateTimeFormatter, FieldNumberCurrencyFormatter y FieldNumberPercentFormatter. Instale el paquete con dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha y use estas clases para formatear los valores de los campos AcroForm en el servidor sin requerir un motor JavaScript.

Guía paso a paso

Paso 1: Instalar el paquete

Agrega Aspose.PDF FOSS a tu proyecto:

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

Paso 2: Importar clases requeridas

using Aspose.Pdf.Annotations.JavascriptExtensions;

Paso 3: Formatear un valor de campo de fecha/hora

FieldDateTimeFormatter.Format(dateFormat, dateValue) convierte una cadena de fecha sin procesar según un patrón de formato de fecha al estilo Acrobat. Esto corresponde a la función PDF JavaScript AF_Date_Format.

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

El parámetro dateFormat utiliza tokens de formato de fecha de Acrobat (p. ej., mm, dd, yyyy, HH, MM). Cuando la entrada dateValue no puede ser analizada, el método devuelve una cadena vacía.


Paso 4: Formatear un campo numérico como moneda

FieldNumberCurrencyFormatter.Format(precision, sepStyle, negStyle, currencySymbol, isPrependCurrency, fieldValue) formatea una cadena numérica como un valor de moneda. Esto corresponde a la función AF_Number_Format de JavaScript en PDF.

var currencyFormatter = new FieldNumberCurrencyFormatter();
string formatted = currencyFormatter.Format(
    precision: 2,
    sepStyle: 0,
    negStyle: 0,
    currencySymbol: "$",
    isPrependCurrency: true,
    fieldValue: "1234.5");
  • precision - número de decimales
  • sepStyle - estilo del separador de miles (0 = coma, 1 = punto, 2 = ninguno)
  • negStyle - estilo de número negativo (0 = paréntesis, 1 = prefijo menos)
  • currencySymbol - cadena del símbolo de moneda
  • isPrependCurrency - true para colocar el símbolo antes del número
  • fieldValue - la cadena numérica cruda a formatear

Paso 5: Formatear un campo numérico como porcentaje

FieldNumberPercentFormatter.Format(precision, sepStyle, isPrependPercent, fieldValue) formatea una cadena numérica como un porcentaje, multiplicando primero el valor bruto por 100. Esto corresponde a la función PDF JavaScript AF_Percent_Format.

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

Parámetros:

  • precision - número de decimales después del punto decimal
  • sepStyle - estilo del separador de miles (0 = coma, 1 = punto, 2 = ninguno)
  • isPrependPercent - true para anteponer el símbolo %, false para añadirlo al final
  • fieldValue - la cadena numérica sin formato (el formateador multiplica por 100)

Problemas comunes y soluciones

FieldDateTimeFormatter devuelve una cadena vacía
Esto ocurre cuando el argumento dateValue no puede ser analizado por el patrón de fecha en dateFormat. Los tokens de fecha de Acrobat difieren de las cadenas de formato .NET DateTime.

FieldNumberCurrencyFormatter produce un separador decimal incorrecto El parámetro sepStyle controla el separador de miles. Para usar un punto como separador de miles, pase sepStyle: 1.

La salida de FieldNumberPercentFormatter es 100 veces demasiado grande
El formateador multiplica el valor de entrada por 100. Si su fieldValue ya representa un porcentaje (p. ej., “87.5” en lugar de “0.875”), divida por 100 antes de llamar a Format.

Namespace no encontrado después de la instalación del paquete
Asegúrese de que está apuntando a net8.0 o posterior. El espacio de nombres JavascriptExtensions solo está disponible en el paquete Aspose.Pdf.Foss.

NullReferenceException on empty fieldValue Pasar null o una cadena vacía como fieldValue provocará una excepción de análisis. Valide la entrada antes de llamar a Format.

Preguntas frecuentes

¿Qué significa “corresponds to AF_Date_Format”?

PDF AcroForm JavaScript utiliza AF_Date_Format como la función de formato incorporada para los campos de fecha. FieldDateTimeFormatter replica la misma lógica de formato en código administrado .NET para que pueda aplicar las mismas cadenas de formato de campo sin ejecutar JavaScript.

¿Puedo usar estos formateadores fuera del contexto de un documento PDF?

Sí. FieldDateTimeFormatter, FieldNumberCurrencyFormatter y FieldNumberPercentFormatter son clases simples sin dependencia de una instancia de Document. Puedes usarlas en cualquier contexto .NET 8+ como formateadores de utilidad.

¿Cuál es la diferencia entre FieldNumberCurrencyFormatter y FieldNumberPercentFormatter?

FieldNumberCurrencyFormatter formatea un número como una cantidad monetaria sin multiplicación. FieldNumberPercentFormatter multiplica la entrada por 100 y agrega o antepone un símbolo de porcentaje.

¿Existe una forma de encadenar varios formateadores?

No se proporciona encadenamiento incorporado. Aplica los formateadores secuencialmente en el código.

¿Necesito el documento PDF completo para usar estas clases?

No. Los formateadores operan sobre cadenas simples y devuelven cadenas formateadas. No requieren una instancia abierta Document.

Ver también

 Español