Ausnahmebehandlung
Ausnahmebehandlung
Dieses Handbuch zeigt, wie Aspose.PDF FOSS für .NET Fehlermeldungen über eine typisierte Ausnahmehierarchie signalisiert, deren Wurzel PdfException ist, die wiederum von System.Exception abgeleitet wird, und wie jede Fehlkategorie abgefangen werden kann. Jede PDF-spezifische Ausnahme in der Bibliothek – ein falsches Passwort, eine nicht lesbare Datei, eine fehlende Schriftart oder ein ungültiger Formularvorgang – leitet von PdfException ab, sodass das Abfangen von PdfException allein ausreicht, um jede von der Bibliothek ausgelöste Ausnahme abzufangen, während spezifischere catch-Blöcke Ihnen ermöglichen, unterschiedlich auf jede Fehlermöglichkeit zu reagieren.
Passwort- und Sicherheitsfehler
InvalidPasswordException tritt auf, wenn ein passwortgeschützter Vorgang ohne Angabe eines gültigen Passworts versucht wird, etwa beim Öffnen eines verschlüsselten Dokuments mit falschem Passwort.
try
{
var doc = new Document("encrypted.pdf", "wrong-password");
}
catch (InvalidPasswordException ex)
{
Console.WriteLine($"Password rejected: {ex.Message}");
}Dateiformatfehler
InvalidPdfFileFormatException tritt auf, wenn ein Stream nicht als PDF geöffnet werden kann – ein fehlerhafter Header, eine abgeschnittene Datei oder Inhalt, der überhaupt nicht als PDF erkennbar ist.
try
{
var doc = new Document("not-a-pdf.txt");
}
catch (InvalidPdfFileFormatException ex)
{
Console.WriteLine($"Not a valid PDF: {ex.Message}");
}Schriftartfehler
Schriftbezogene Fehler fallen in drei unterschiedliche Ausnahmetypen, je nach dem, was schiefgelaufen ist:
FontNotFoundException— keine Systemschrift oder benutzerdefinierte Schriftquelle entspricht dem angeforderten Schriftartenamen.UnsupportedFontTypeException— die als Schrift bereitgestellte Datei ist kein erkanntes Schriftprogramm.IncorrectFontUsageException— ein Textdarstellungsoperator erscheint im Inhaltsstrom, während im aktuellen Grafikstatus keine Schrift gesetzt ist.
try
{
var font = FontRepository.FindFont("NonexistentFont");
}
catch (FontNotFoundException ex)
{
Console.WriteLine($"Font not found: {ex.Message}");
}
try
{
var font = FontRepository.OpenFont("not-a-font-file.dat");
}
catch (UnsupportedFontTypeException ex)
{
Console.WriteLine($"Unsupported font file: {ex.Message}");
}
try
{
var extractor = new PdfExtractor(doc);
extractor.ExtractText();
}
catch (IncorrectFontUsageException ex)
{
Console.WriteLine($"Content stream font error: {ex.Message}");
}Fehler bei der Textextraktion
PdfTextDecodingException tritt auf, wenn Textinhalt nicht dekodiert werden kann, zum Beispiel wenn die von einer Schrift referenzierte Kodierung fehlt oder fehlerhaft ist.
try
{
var extractor = new PdfExtractor(doc);
extractor.GetText("output.txt");
}
catch (PdfTextDecodingException ex)
{
Console.WriteLine($"Text decoding failed: {ex.Message}");
}Fehler beim Formulartyp
InvalidFormTypeOperationException tritt auf, wenn ein Vorgang am falschen Formulartyp versucht wird – zum Beispiel, wenn eine XFA-spezifische Methode auf einem Formular aufgerufen wird, das nicht XFA-basiert ist.
try
{
var form = new Form(doc);
form.AssignXfa(xmlData);
}
catch (InvalidFormTypeOperationException ex)
{
Console.WriteLine($"Wrong form type: {ex.Message}");
}Tipps und bewährte Verfahren
- Fange zuerst den spezifischsten Ausnahmetyp ab (zum Beispiel
InvalidPasswordException) und füge einen abschließendencatch (PdfException)-Block nur als Rückfall für alles andere hinzu, was die Bibliothek auslöst. - Prüfe
Form.IsXfaoderForm.Type, bevor du XFA-spezifische Methoden aufrufst, umInvalidFormTypeOperationExceptionzu vermeiden. - Suche Schriftarten mit
FontRepository.FindFontvor dem Rendern, damit fehlende Schriftarten explizit behandelt werden können, anstatt sich ausschließlich auf Ausnahmebehandlung zu verlassen. - Wenn ein unerwartetes
PdfExceptiondeinen obersten Handler erreicht, erstelle einCrashReportOptionsmit der abgefangenen Ausnahme und rufeex.GenerateCrashReport(options)auf, um einen Diagnostikbericht für Support-Anfragen zu erfassen. - Übergebe das Dokumentenpasswort stets über die
Document-Konstruktorüberladung, anstatt die Datei zuerst zu öffnen und es erneut zu versuchen.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
InvalidPasswordException beim Öffnen des Dokuments | Falsches oder fehlendes Passwort angegeben | Übergeben Sie das korrekte Passwort an den Document(filename, password)-Konstruktor |
InvalidPdfFileFormatException beim Öffnen des Dokuments | Datei ist kein PDF, oder ist beschädigt oder abgeschnitten | Überprüfen Sie den Dateikopf und holen Sie die Quelldatei erneut ein |
FontNotFoundException während der Darstellung | Die angeforderte Schriftart ist nicht installiert und es ist kein Ersatz registriert | Registrieren Sie eine Schriftartquelle oder prüfen Sie FontRepository.Substitutions |
UnsupportedFontTypeException von FontRepository.OpenFont | Die bereitgestellte Datei ist kein erkanntes Schriftprogramm | Stellen Sie sicher, dass die Datei eine gültige Schriftart ist, bevor Sie sie öffnen |
InvalidFormTypeOperationException bei Formularoperationen | XFA-spezifische Methode wurde bei einem Nicht-XFA-Formular aufgerufen, oder umgekehrt | Prüfen Sie Form.IsXfa oder Form.Type, bevor Sie typenspezifische Methoden aufrufen |
FAQ
Soll ich PdfException abfangen oder die spezifische Unterklasse?
Fange die spezifische Unterklasse, zum Beispiel InvalidPasswordException, ab, wenn du auf diesen Fehler anders reagieren musst. Füge einen finalen catch (PdfException)-Block als Fallback für alle anderen von der Bibliothek ausgelösten Fehler hinzu.
Leiten sich alle PDF-spezifischen Ausnahmen von PdfException ab?
Ja. PdfTextDecodingException, IncorrectFontUsageException, InvalidPasswordException, InvalidPdfFileFormatException, FontNotFoundException, UnsupportedFontTypeException und InvalidFormTypeOperationException leiten sich alle von PdfException ab, das selbst von System.Exception abgeleitet wird.
Wozu dient PdfExceptionMessages?
PdfExceptionMessages ist eine statische Klasse, die Nachrichten-Strings, die durch die Ausnahmen der Bibliothek und Sicherheitsdiagnosen bereitgestellt werden, zentralisiert, einschließlich der DangerousFile-Nachricht.
Kann ich einen Diagnostikbericht erstellen, wenn eine Ausnahme auftritt?
Ja. Erstelle eine CrashReportOptions-Instanz mit der abgefangenen Ausnahme, setze optional Eigenschaften wie ApplicationTitle und CrashReportDirectory und rufe GenerateCrashReport(options) auf dem PdfException auf, um einen detaillierten Absturzbericht zu schreiben.
API Reference Zusammenfassung
| Klasse | Beschreibung |
|---|---|
PdfException | Basisausnahme für Fehler bei der Ausführung der PDF-Anwendung |
PdfTextDecodingException | Ausgelöst, wenn Textinhalt nicht dekodiert werden kann |
IncorrectFontUsageException | Ausgelöst, wenn ein Textanzeige-Operator erscheint, ohne dass im Grafikstatus eine Schriftart festgelegt ist |
InvalidPasswordException | Entsteht, wenn ein passwortgeschützter Vorgang ohne gültiges Passwort versucht wird. |
InvalidPdfFileFormatException | Tritt auf, wenn ein Datenstrom nicht als PDF geöffnet werden kann. |
FontNotFoundException | Entsteht, wenn die angeforderte Schriftart nicht gefunden werden kann. |
UnsupportedFontTypeException | Tritt auf, wenn eine Datei nicht als Schriftart geöffnet werden kann, weil ihr Format nicht unterstützt wird. |
InvalidFormTypeOperationException | Ausgelöst, sobald ein Vorgang mit dem falschen Formulartyp versucht wird |
PdfExceptionMessages | Zentral verwaltete Nachrichten-Strings, die von den Ausnahmen und Sicherheitsdiagnosen der Bibliothek bereitgestellt werden |