Jak pracovat s rozšířeními JavaScript v .NET

Jak pracovat s rozšířeními JavaScript v .NET

Aspose.PDF FOSS pro .NET zahrnuje serverové implementace funkcí PDF JavaScript AF_Date_Format, AF_Number_Format a AF_Percent_Format prostřednictvím tříd FieldDateTimeFormatter, FieldNumberCurrencyFormatter a FieldNumberPercentFormatter. Nainstalujte balíček pomocí dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha a použijte tyto třídy k formátování hodnot polí AcroForm na serveru bez nutnosti JavaScriptového enginu.

Průvodce krok za krokem

Krok 1: Nainstalujte balíček

Přidejte Aspose.PDF FOSS do svého projektu:

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

Krok 2: Importovat požadované třídy

using Aspose.Pdf.Annotations.JavascriptExtensions;

Krok 3: Formátovat hodnotu pole datum/čas

FieldDateTimeFormatter.Format(dateFormat, dateValue) převádí surový řetězec data podle vzoru formátu data ve stylu Acrobat. To odpovídá funkci PDF JavaScript AF_Date_Format.

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

Parametr dateFormat používá tokeny formátu data Acrobat (např. mm, dd, yyyy, HH, MM). Když vstup dateValue nelze analyzovat, metoda vrátí prázdný řetězec.


Krok 4: Formátovat číselné pole jako měnu

FieldNumberCurrencyFormatter.Format(precision, sepStyle, negStyle, currencySymbol, isPrependCurrency, fieldValue) formátuje číselný řetězec jako měnovou hodnotu. Toto odpovídá funkci 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");

Parameters:

  • precision - počet desetinných míst
  • sepStyle - styl oddělovače tisíců (0 = čárka, 1 = tečka, 2 = žádný)
  • negStyle - styl záporného čísla (0 = závorky, 1 = mínus před číslem)
  • currencySymbol - řetězec symbolu měny
  • isPrependCurrency - true pro umístění symbolu před číslo
  • fieldValue - surový číselný řetězec k formátování

Krok 5: Formátovat číselné pole jako procento

FieldNumberPercentFormatter.Format(precision, sepStyle, isPrependPercent, fieldValue) formátuje číselný řetězec jako procento, nejprve vynásobí surovou hodnotu 100. To odpovídá funkci PDF JavaScript AF_Percent_Format.

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

Parametry:

  • precision - počet desetinných míst za desetinnou čárkou
  • sepStyle - styl oddělovače tisíců (0 = čárka, 1 = tečka, 2 = žádný)
  • isPrependPercent - true pro přidání % symbolu na začátek, false pro přidání na konec
  • fieldValue - surový číselný řetězec (formátovač násobí 100)

Běžné problémy a opravy

FieldDateTimeFormatter vrací prázdný řetězec
K tomu dochází, když argument dateValue nelze rozparsovat podle vzoru data v dateFormat. Tokeny data v Acrobat se liší od formátovacích řetězců .NET DateTime.

FieldNumberCurrencyFormatter produces wrong decimal separator
Parametr sepStyle řídí oddělovač tisíců. Chcete-li použít tečku jako oddělovač tisíců, předávejte sepStyle: 1.

FieldNumberPercentFormatter výstup je 100x příliš velký
Formátovač násobí vstupní hodnotu 100. Pokud váš fieldValue již představuje procento (např. „87,5“ místo „0,875“), vydělte 100 před voláním metody Format.

Jmenný prostor nebyl nalezen po instalaci balíčku Ujistěte se, že cílíte na net8.0 nebo novější. Jmenný prostor JavascriptExtensions je k dispozici pouze v balíčku Aspose.Pdf.Foss.

NullReferenceException on empty fieldValue
Předání null nebo prázdného řetězce jako fieldValue způsobí výjimku při parsování. Ověřte vstup před voláním Format.

Často kladené otázky

Co znamená „corresponds to AF_Date_Format“?

PDF AcroForm JavaScript používá AF_Date_Format jako vestavěnou funkci formátování pro pole data. FieldDateTimeFormatter replikuje stejnou logiku formátování v .NET spravovaném kódu, takže můžete použít stejné řetězce formátu pole bez spouštění JavaScriptu.

Mohu tyto formátovače použít mimo kontext PDF dokumentu?

Ano. FieldDateTimeFormatter, FieldNumberCurrencyFormatter a FieldNumberPercentFormatter jsou jednoduché třídy bez závislosti na instanci Document. Můžete je použít v jakémkoli kontextu .NET 8+ jako pomocné formátovače.

Jaký je rozdíl mezi FieldNumberCurrencyFormatter a FieldNumberPercentFormatter?

FieldNumberCurrencyFormatter formátuje číslo jako peněžní částku bez násobení. FieldNumberPercentFormatter vynásobí vstup 100 a přidá nebo předřadí symbol procenta.

Existuje způsob, jak řetězit více formátovačů?

Není k dispozici vestavěné řetězení. Použijte formátovače sekvenčně v kódu.

Potřebuji celý PDF dokument k použití těchto tříd?

Ne. Formátovače pracují s prostými řetězci a vracejí formátované řetězce. Nepotřebují otevřenou instanci Document.

Viz také

 Čeština