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-alphaKrok 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ístsepStyle- 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ěnyisPrependCurrency- true pro umístění symbolu před číslofieldValue- 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 čárkousepStyle- 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 konecfieldValue- 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.