Jak pracować z rozszerzeniami JavaScript w .NET
Aspose.PDF FOSS dla .NET zawiera implementacje po stronie serwera funkcji PDF JavaScript AF_Date_Format, AF_Number_Format i AF_Percent_Format za pośrednictwem klas FieldDateTimeFormatter, FieldNumberCurrencyFormatter i FieldNumberPercentFormatter. Zainstaluj pakiet przy użyciu dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha i użyj tych klas do formatowania wartości pól AcroForm na serwerze bez konieczności używania silnika JavaScript.
Przewodnik krok po kroku
Krok 1: Zainstaluj pakiet
Dodaj Aspose.PDF FOSS do swojego projektu:
dotnet add package Aspose.Pdf.Foss --version 0.1.0-alphaKrok 2: Importuj wymagane klasy
using Aspose.Pdf.Annotations.JavascriptExtensions;Krok 3: Formatuj wartość pola daty i czasu
FieldDateTimeFormatter.Format(dateFormat, dateValue) konwertuje surowy ciąg daty zgodnie ze wzorcem formatu daty w stylu Acrobat. Odpowiada to funkcji PDF JavaScript AF_Date_Format.
string formatted = FieldDateTimeFormatter.Format("mm/dd/yyyy", "2026-06-11");Parametr dateFormat używa tokenów formatu daty Acrobat (np. mm, dd, yyyy, HH, MM). Gdy wejście dateValue nie może zostać sparsowane, metoda zwraca pusty ciąg znaków.
Krok 4: Sformatuj pole liczbowe jako walutę
FieldNumberCurrencyFormatter.Format(precision, sepStyle, negStyle, currencySymbol, isPrependCurrency, fieldValue) formatuje ciąg liczbowy jako wartość walutową. Odpowiada to funkcji 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- liczba miejsc dziesiętnychsepStyle- styl separatora tysięcy (0 = przecinek, 1 = kropka, 2 = brak)negStyle- styl liczby ujemnej (0 = nawiasy, 1 = prefiks minus)currencySymbol- ciąg symbolu walutyisPrependCurrency- true, aby umieścić symbol przed liczbąfieldValue- surowy ciąg liczbowy do sformatowania
Krok 5: Formatuj pole liczbowe jako procent
FieldNumberPercentFormatter.Format(precision, sepStyle, isPrependPercent, fieldValue) formatuje ciąg liczbowy jako procent, najpierw mnożąc wartość surową przez 100. Odpowiada to funkcji PDF JavaScript AF_Percent_Format.
var percentFormatter = new FieldNumberPercentFormatter();
string formatted = percentFormatter.Format(
precision: 1,
sepStyle: 0,
isPrependPercent: false,
fieldValue: "0.875");Parametry:
precision- liczba miejsc po przecinkusepStyle- styl separatora tysięcy (0 = przecinek, 1 = kropka, 2 = brak)isPrependPercent- true, aby dodać znak % na początku, false, aby dodać na końcufieldValue- surowy ciąg liczbowy (formatowanie mnoży przez 100)
Typowe problemy i rozwiązania
FieldDateTimeFormatter zwraca pusty ciąg
Dzieje się to, gdy argument dateValue nie może zostać sparsowany przez wzorzec daty w dateFormat. Tokeny daty w Acrobat różnią się od ciągów formatowania .NET DateTime.
FieldNumberCurrencyFormatter produces wrong decimal separator
Parametr sepStyle kontroluje separator tysięcy. Aby użyć kropki jako separatora tysięcy, przekaż sepStyle: 1.
FieldNumberPercentFormatter output is 100x too large
Formater mnoży wartość wejściową przez 100. Jeśli Twój fieldValue już reprezentuje procent (np. “87.5” zamiast “0.875”), podziel przez 100 przed wywołaniem Format.
Namespace nie znaleziony po instalacji pakietu Upewnij się, że kierujesz się na net8.0 lub nowszy. Namespace JavascriptExtensions jest dostępny tylko w pakiecie Aspose.Pdf.Foss.
NullReferenceException on empty fieldValue
Przekazanie null lub pustego ciągu jako fieldValue spowoduje wyjątek parsowania. Sprawdź poprawność danych wejściowych przed wywołaniem metody Format.
Najczęściej zadawane pytania
Co oznacza „corresponds to AF_Date_Format”?
PDF AcroForm JavaScript używa AF_Date_Format jako wbudowanej funkcji formatowania dla pól daty. FieldDateTimeFormatter odtwarza tę samą logikę formatowania w zarządzanym kodzie .NET, abyś mógł stosować te same ciągi formatów pól bez wykonywania JavaScript.
Czy mogę używać tych formatowników poza kontekstem dokumentu PDF?
Tak. FieldDateTimeFormatter, FieldNumberCurrencyFormatter i FieldNumberPercentFormatter to zwykłe klasy bez zależności od instancji Document. Możesz używać ich w dowolnym kontekście .NET 8+ jako formatery pomocnicze.
Jaka jest różnica między FieldNumberCurrencyFormatter a FieldNumberPercentFormatter?
FieldNumberCurrencyFormatter formatuje liczbę jako kwotę pieniężną bez mnożenia. FieldNumberPercentFormatter mnoży wejście przez 100 i dodaje lub wstawia symbol procenta.
Czy istnieje sposób, aby połączyć wiele formatowników?
Nie zapewniono wbudowanego łańcuchowania. Zastosuj formatery sekwencyjnie w kodzie.
Czy potrzebuję pełnego dokumentu PDF, aby używać tych klas?
Nie. Formatory działają na zwykłych ciągach znaków i zwracają sformatowane ciągi znaków. Nie wymagają otwartej instancji Document.