Undantagshantering

Undantagshantering

Denna guide visar hur Aspose.PDF FOSS för .NET signalerar fel genom en typad undantagshierarki med rot i PdfException, som i sin tur ärver från System.Exception, och hur man fångar varje felkategori. Varje PDF-specifikt undantag i biblioteket — ett felaktigt lösenord, en oläsbar fil, ett saknat typsnitt eller en ogiltig formuläroperation — ärver från PdfException, så att fånga bara PdfException är tillräckligt för att avbryta alla fel som biblioteket kastar, medan mer specifika catch-block låter dig reagera olika på varje feltyp.


Lösenords- och säkerhetsfel

InvalidPasswordException kastas när en lösenordsskyddad operation försöks utan att ange ett giltigt lösenord, till exempel vid öppning av ett krypterat dokument med fel lösenord.

try
{
    var doc = new Document("encrypted.pdf", "wrong-password");
}
catch (InvalidPasswordException ex)
{
    Console.WriteLine($"Password rejected: {ex.Message}");
}

Filformatfel

InvalidPdfFileFormatException kastas när en ström inte kan öppnas som en PDF — ett felaktigt huvud, en avkortad fil eller innehåll som överhuvudtaget inte känns igen som PDF.

try
{
    var doc = new Document("not-a-pdf.txt");
}
catch (InvalidPdfFileFormatException ex)
{
    Console.WriteLine($"Not a valid PDF: {ex.Message}");
}

Typsnittsfel

Teckensnittsrelaterade fel faller in i tre distinkta undantagstyper, beroende på vad som gick fel:

  • FontNotFoundException — ingen systemteckensnitt eller anpassad teckensnittskälla matchar det begärda teckensnittsnamnet.
  • UnsupportedFontTypeException — filen som levererades som teckensnitt är inte ett känt teckensnittprogram.
  • IncorrectFontUsageException — en textvisningsoperator dyker upp i en innehållsström medan inget teckensnitt är inställt i det aktuella grafikläget.
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}");
}

Fel vid textutdragning

PdfTextDecodingException kastas när textinnehåll inte kan avkodas, till exempel när den kodning som ett teckensnitt refererar till saknas eller är felaktig.

try
{
    var extractor = new PdfExtractor(doc);
    extractor.GetText("output.txt");
}
catch (PdfTextDecodingException ex)
{
    Console.WriteLine($"Text decoding failed: {ex.Message}");
}

Formulärtypfel

InvalidFormTypeOperationException kastas när en operation försöks på fel formulärtyp — till exempel att anropa en XFA-specifik metod på ett formulär som inte är XFA-baserat.

try
{
    var form = new Form(doc);
    form.AssignXfa(xmlData);
}
catch (InvalidFormTypeOperationException ex)
{
    Console.WriteLine($"Wrong form type: {ex.Message}");
}

Tips och bästa praxis

  • Fånga den mest specifika undantypen först (till exempel, InvalidPasswordException) och lägg till ett sista catch (PdfException)-block endast som en reserv för allt annat som biblioteket kastar.
  • Kontrollera Form.IsXfa eller Form.Type innan du anropar XFA-specifika metoder för att undvika InvalidFormTypeOperationException.
  • Sök upp teckensnitt med FontRepository.FindFont innan rendering så att saknade teckensnitt kan hanteras explicit, snarare än att enbart förlita sig på undantagshantering.
  • När ett oväntat PdfException når din översta hanterare, bygg ett CrashReportOptions med det fångade undantaget och anropa ex.GenerateCrashReport(options) för att samla in en diagnostisk rapport för supportförfrågningar.
  • Skicka alltid dokumentets lösenord via Document-konstruktörsöverladdningen snarare än att öppna filen först och försöka igen.

Vanliga problem

ProblemOrsakÅtgärd
InvalidPasswordException vid dokumentöppningFel eller saknat lösenord har angettsSkicka det korrekta lösenordet till Document(filename, password)-konstruktorn
InvalidPdfFileFormatException vid dokumentöppningFilen är inte en PDF, eller är korrupt eller trunkeradVerifiera filhuvudet och hämta källfilen på nytt
FontNotFoundException under renderingBegärt teckensnitt är inte installerat och ingen ersättning är registreradRegistrera en teckensnittskälla eller kontrollera FontRepository.Substitutions
UnsupportedFontTypeException från FontRepository.OpenFontDen angivna filen är inte ett känt teckensnittprogramBekräfta att filen är ett giltigt teckensnitt innan du öppnar den
InvalidFormTypeOperationException på formuläroperationerXFA-specifik metod anropad på ett icke-XFA-formulär, eller vice versaKontrollera Form.IsXfa eller Form.Type innan du anropar typ-specifika metoder

FAQ

Ska jag fånga PdfException eller den specifika subklassen?

Fånga den specifika subklassen, till exempel InvalidPasswordException, när du behöver reagera annorlunda på det felet. Lägg till ett sista catch (PdfException)-block som en återfalla för alla andra fel som biblioteket kastar.

Deriverar alla PDF-specifika undantag från PdfException?

Ja. PdfTextDecodingException, IncorrectFontUsageException, InvalidPasswordException, InvalidPdfFileFormatException, FontNotFoundException, UnsupportedFontTypeException och InvalidFormTypeOperationException deriverar alla från PdfException, som i sin tur deriverar från System.Exception.

Vad är PdfExceptionMessages för?

PdfExceptionMessages är en statisk klass som centraliserar meddelandestringar som visas av bibliotekets undantag och säkerhetsdiagnostik, inklusive DangerousFile-meddelandet.

Kan jag generera en diagnostisk rapport när ett undantag inträffar?

Ja. Skapa en CrashReportOptions-instans med det fångade undantaget, sätt valfritt egenskaper såsom ApplicationTitle och CrashReportDirectory, och anropa GenerateCrashReport(options) på PdfException för att skriva en detaljerad kraschrapport.


API Reference Sammanfattning

KlassBeskrivning
PdfExceptionBasundantag för fel under körning av PDF-applikationen
PdfTextDecodingExceptionKastas när textinnehållet inte kan avkodas
IncorrectFontUsageExceptionKastas när en textvisningsoperator förekommer utan att ett typsnitt har ställts in i grafik-tillståndet
InvalidPasswordExceptionKastas när en lösenordsskyddad operation försöks utan ett giltigt lösenord
InvalidPdfFileFormatExceptionKastas när en ström inte kan öppnas som en PDF
FontNotFoundExceptionKastas när det begärda teckensnittet inte kan hittas
UnsupportedFontTypeExceptionKastas när en fil inte kan öppnas som ett teckensnitt eftersom dess format inte stöds
InvalidFormTypeOperationExceptionKastas när en operation utförs på fel formulärtyp
PdfExceptionMessagesCentrala meddelandestringar som visas av bibliotekets undantag och säkerhetsdiagnostik

Se även

 Svenska