Hur man arbetar med JavaScript‑tillägg i .NET
Aspose.PDF FOSS för .NET inkluderar server‑sidimplementeringar av PDF‑JavaScript‑funktionerna AF_Date_Format, AF_Number_Format och AF_Percent_Format via klasserna FieldDateTimeFormatter, FieldNumberCurrencyFormatter och FieldNumberPercentFormatter. Installera paketet med dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha och använd dessa klasser för att formatera AcroForm‑fältvärden på servern utan att kräva en JavaScript‑motor.
Steg-för-steg-guide
Steg 1: Installera paketet
Lägg till Aspose.PDF FOSS i ditt projekt:
dotnet add package Aspose.Pdf.Foss --version 0.1.0-alphaSteg 2: Importera nödvändiga klasser
using Aspose.Pdf.Annotations.JavascriptExtensions;Steg 3: Formatera ett datum/tid-fältvärde
FieldDateTimeFormatter.Format(dateFormat, dateValue) konverterar en rå datumsträng enligt ett Acrobat‑stil datumformatmönster. Detta motsvarar PDF JavaScript‑funktionen AF_Date_Format.
string formatted = FieldDateTimeFormatter.Format("mm/dd/yyyy", "2026-06-11");Parametern dateFormat använder Acrobat-datumformatstoken (t.ex. mm, dd, yyyy, HH, MM). När indata dateValue inte kan tolkas returnerar metoden en tom sträng.
Steg 4: Formatera ett numeriskt fält som valuta
FieldNumberCurrencyFormatter.Format(precision, sepStyle, negStyle, currencySymbol, isPrependCurrency, fieldValue) formaterar en numerisk sträng som ett valutavärde. Detta motsvarar PDF JavaScript AF_Number_Format‑funktionen.
var currencyFormatter = new FieldNumberCurrencyFormatter();
string formatted = currencyFormatter.Format(
precision: 2,
sepStyle: 0,
negStyle: 0,
currencySymbol: "$",
isPrependCurrency: true,
fieldValue: "1234.5");precision– antal decimalersepStyle– tusentalsavgränsare stil (0 = komma, 1 = punkt, 2 = ingen)negStyle– negativt tal stil (0 = parenteser, 1 = minusprefix)currencySymbol– valutansymbolsträngenisPrependCurrency– true för att placera symbolen före taletfieldValue– den råa numeriska strängen att formatera
Steg 5: Formatera ett numeriskt fält som procent
FieldNumberPercentFormatter.Format(precision, sepStyle, isPrependPercent, fieldValue) formaterar en numerisk sträng som en procent, multiplicerar först det råa värdet med 100. Detta motsvarar PDF JavaScript-funktionen AF_Percent_Format.
var percentFormatter = new FieldNumberPercentFormatter();
string formatted = percentFormatter.Format(
precision: 1,
sepStyle: 0,
isPrependPercent: false,
fieldValue: "0.875");Parametrar:
precision- antal decimaler efter decimaltecknetsepStyle- tusentalsavgränsare stil (0 = komma, 1 = punkt, 2 = ingen)isPrependPercent- true för att lägga till %-symbolen före, false för att lägga till efterfieldValue- den råa numeriska strängen (formateraren multiplicerar med 100)
Vanliga problem och lösningar
FieldDateTimeFormatter returnerar en tom sträng
Detta inträffar när dateValue‑argumentet inte kan parsas av datummönstret i dateFormat. Acrobat‑datumtoken skiljer sig från .NET DateTime‑formatsträngar.
FieldNumberCurrencyFormatter producerar fel decimalavgränsare
Parametern sepStyle styr tusentalsavgränsaren. För att använda en punkt som tusentalsavgränsare, skicka sepStyle: 1.
FieldNumberPercentFormatter output är 100 gånger för stor
Formatteraren multiplicerar inmatningsvärdet med 100. Om ditt fieldValue redan representerar en procentsats (t.ex. “87.5” istället för “0.875”), dela med 100 innan du anropar Format.
Namnrymd hittades inte efter paketinstallering
Se till att du riktar in dig på net8.0 eller senare. JavascriptExtensions‑namnrymden är endast tillgänglig i paketet Aspose.Pdf.Foss.
NullReferenceException på tomt fieldValue
Att skicka null eller en tom sträng som fieldValue kommer att orsaka ett parse‑undantag. Validera indata innan du anropar Format.
Vanliga frågor
Vad betyder “corresponds to AF_Date_Format”?
PDF AcroForm JavaScript använder AF_Date_Format som den inbyggda formateringsfunktionen för datumfält. FieldDateTimeFormatter återger samma formateringslogik i .NET managed code så att du kan använda samma fältformatsträngar utan att köra JavaScript.
Kan jag använda dessa formaterare utanför en PDF-dokumentkontext?
Ja. FieldDateTimeFormatter, FieldNumberCurrencyFormatter och FieldNumberPercentFormatter är enkla klasser utan beroende av en Document‑instans. Du kan använda dem i vilket .NET 8+‑sammanhang som helst som verktygsformatörer.
Vad är skillnaden mellan FieldNumberCurrencyFormatter och FieldNumberPercentFormatter?
FieldNumberCurrencyFormatter formaterar ett tal som ett penningbelopp utan multiplikation. FieldNumberPercentFormatter multiplicerar indata med 100 och lägger till eller sätter ett procenttecken före eller efter.
Finns det ett sätt att kedja flera formaterare?
Ingen inbyggd kedjning tillhandahålls. Använd formaterare sekventiellt i koden.
Behöver jag hela PDF-dokumentet för att använda dessa klasser?
Nej. Formaterarna arbetar på rena strängar och returnerar formaterade strängar. De kräver inte en öppen Document instans.