Wie man mit JavaScript-Erweiterungen in .NET arbeitet
Aspose.PDF FOSS for .NET enthält serverseitige Implementierungen der PDF‑JavaScript‑Funktionen AF_Date_Format, AF_Number_Format und AF_Percent_Format über die Klassen FieldDateTimeFormatter, FieldNumberCurrencyFormatter und FieldNumberPercentFormatter. Installieren Sie das Paket mit dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha und verwenden Sie diese Klassen, um AcroForm‑Feldwerte auf dem Server zu formatieren, ohne dass ein JavaScript‑Engine erforderlich ist.
Schritt-für-Schritt-Anleitung
Schritt 1: Paket installieren
Fügen Sie Aspose.PDF FOSS zu Ihrem Projekt hinzu:
dotnet add package Aspose.Pdf.Foss --version 0.1.0-alphaSchritt 2: Erforderliche Klassen importieren
using Aspose.Pdf.Annotations.JavascriptExtensions;Schritt 3: Formatieren eines Datums-/Uhrzeitfeldwerts
FieldDateTimeFormatter.Format(dateFormat, dateValue) konvertiert einen Rohdatums‑String gemäß einem Acrobat‑ähnlichen Datumsformatmuster. Dies entspricht der PDF JavaScript AF_Date_Format‑Funktion.
string formatted = FieldDateTimeFormatter.Format("mm/dd/yyyy", "2026-06-11");Der dateFormat‑Parameter verwendet Acrobat‑Datumsformat‑Token (z. B. mm, dd, yyyy, HH, MM). Wenn die Eingabe dateValue nicht geparst werden kann, gibt die Methode einen leeren String zurück.
Schritt 4: Ein numerisches Feld als Währung formatieren
FieldNumberCurrencyFormatter.Format(precision, sepStyle, negStyle, currencySymbol, isPrependCurrency, fieldValue) formatiert einen numerischen String als Währungswert. Dies entspricht der PDF‑JavaScript‑Funktion AF_Number_Format.
var currencyFormatter = new FieldNumberCurrencyFormatter();
string formatted = currencyFormatter.Format(
precision: 2,
sepStyle: 0,
negStyle: 0,
currencySymbol: "$",
isPrependCurrency: true,
fieldValue: "1234.5");Parameter:
precision- Anzahl der DezimalstellensepStyle- Tausendertrennzeichenstil (0 = Komma, 1 = Punkt, 2 = keiner)negStyle- Negativzahlstil (0 = Klammern, 1 = Minuspräfix)currencySymbol- das Währungssymbol als ZeichenketteisPrependCurrency- true, um das Symbol vor die Zahl zu setzenfieldValue- die zu formatierende rohe numerische Zeichenkette
Schritt 5: Ein numerisches Feld als Prozentsatz formatieren
FieldNumberPercentFormatter.Format(precision, sepStyle, isPrependPercent, fieldValue) formatiert einen numerischen String als Prozentsatz, indem der Rohwert zuerst mit 100 multipliziert wird. Dies entspricht der PDF‑JavaScript‑Funktion AF_Percent_Format.
var percentFormatter = new FieldNumberPercentFormatter();
string formatted = percentFormatter.Format(
precision: 1,
sepStyle: 0,
isPrependPercent: false,
fieldValue: "0.875");Parameter:
precision– Anzahl der Dezimalstellen nach dem DezimalpunktsepStyle– Tausendertrennzeichenstil (0 = Komma, 1 = Punkt, 2 = keiner)isPrependPercent– true, um das %‑Symbol voranzustellen, false, um es anzuhängenfieldValue– die rohe numerische Zeichenkette (der Formatter multipliziert mit 100)
Häufige Probleme und Lösungen
FieldDateTimeFormatter gibt leere Zeichenfolge zurück
Dies tritt auf, wenn das dateValue-Argument nicht vom Datumsmuster in dateFormat geparst werden kann. Acrobat‑Datumstoken unterscheiden sich von .NET DateTime‑Formatzeichenfolgen.
FieldNumberCurrencyFormatter erzeugt falsches Dezimaltrennzeichen
Der sepStyle Parameter steuert das Tausendertrennzeichen. Um einen Punkt als Tausendertrennzeichen zu verwenden, übergeben Sie sepStyle: 1.
FieldNumberPercentFormatter-Ausgabe ist 100‑mal zu groß
Der Formatter multipliziert den Eingabewert mit 100. Wenn Ihr fieldValue bereits einen Prozentsatz darstellt (z. B. “87.5” statt “0.875”), teilen Sie durch 100, bevor Sie Format aufrufen.
Namespace nach Paketinstallation nicht gefunden Stellen Sie sicher, dass Sie net8.0 oder höher anvisieren. Der JavascriptExtensions-Namespace ist nur im Aspose.Pdf.Foss-Paket verfügbar.
NullReferenceException bei leerem fieldValue
Das Übergeben von null oder einer leeren Zeichenkette als fieldValue führt zu einer Parse‑Ausnahme. Validieren Sie die Eingabe, bevor Sie Format aufrufen.
Häufig gestellte Fragen
Was bedeutet “corresponds to AF_Date_Format”?
PDF AcroForm JavaScript verwendet AF_Date_Format als integrierte Formatierungsfunktion für Datumsfelder. FieldDateTimeFormatter repliziert dieselbe Formatierungslogik in .NET verwaltetem Code, sodass Sie dieselben Feldformatzeichenfolgen anwenden können, ohne JavaScript auszuführen.
Kann ich diese Formatierer außerhalb eines PDF-Dokumentkontexts verwenden?
Ja. FieldDateTimeFormatter, FieldNumberCurrencyFormatter und FieldNumberPercentFormatter sind einfache Klassen ohne Abhängigkeit von einer Document‑Instanz. Sie können sie in jedem .NET 8+ Kontext als Dienstprogramm‑Formatter verwenden.
Was ist der Unterschied zwischen FieldNumberCurrencyFormatter und FieldNumberPercentFormatter?
FieldNumberCurrencyFormatter formatiert eine Zahl als Geldbetrag ohne Multiplikation. FieldNumberPercentFormatter multipliziert die Eingabe mit 100 und fügt ein Prozentzeichen hinzu oder stellt es davor.
Gibt es eine Möglichkeit, mehrere Formatter zu verketten?
Keine eingebaute Verkettung ist verfügbar. Wenden Sie Formatierer sequenziell im Code an.
Brauche ich das vollständige PDF‑Dokument, um diese Klassen zu verwenden?
Nein. Die Formatierer arbeiten mit einfachen Zeichenketten und geben formatierte Zeichenketten zurück. Sie benötigen keine geöffnete Document-Instanz.