Kivételkezelés

Kivételkezelés

Ez az útmutató bemutatja, hogyan jelzi a Aspose.PDF FOSS a .NET számára a hibákat egy típusos kivételhierarchián keresztül, amelynek gyökere a PdfException, amely maga a System.Exception leszármazottja, és hogyan lehet elkapni a hibakategóriákat. A könyvtár minden PDF-specifikus kivétele — rossz jelszó, olvashatatlan fájl, hiányzó betűtípus vagy érvénytelen űrlapművelet — a PdfException leszármazottja, így a PdfException egyedüli elkapása elegendő bármely, a könyvtár által dobott hiba elkapásához, míg a specifikusabb catch blokkok lehetővé teszik, hogy különböző módon reagáljon minden hibamódra.


Jelszó- és biztonsági hibák

InvalidPasswordException akkor dobódik, amikor egy jelszóval védett műveletet próbálnak végrehajtani érvényes jelszó megadása nélkül, például egy titkosított dokumentumot nyitnak meg a rossz jelszóval.

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

Fájlformátum hibák

InvalidPdfFileFormatException akkor dobódik, amikor egy adatfolyamot nem lehet PDF-ként megnyitni — rossz fejléc, csonkított fájl, vagy olyan tartalom, amely egyáltalán nem ismerhető fel PDF-ként.

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

Betűtípus hibák

A betűtípusokkal kapcsolatos hibák három különböző kivételtípusba sorolhatók, attól függően, hogy mi ment rosszul:

  • FontNotFoundException — nincs olyan rendszerszintű vagy egyéni betűtípus forrás, amely megegyezne a kért betűtípusnévvel.
  • UnsupportedFontTypeException — a betűtípusként megadott fájl nem felismert betűtípusprogram.
  • IncorrectFontUsageException — egy szövegmegjelenítő operátor jelenik meg egy tartalmi adatfolyamban, miközben a jelenlegi grafikai állapotban nincs beállítva betűtípus.
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}");
}

Szövegkinyerési hibák

PdfTextDecodingException akkor dobódik, amikor a szövegtartalmat nem lehet dekódolni, például ha a betűtípus által hivatkozott kódolás hiányzik vagy hibás.

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

Űrlaptípus hibák

InvalidFormTypeOperationException akkor dobódik, amikor egy műveletet a helytelen űrlaptípuson próbálnak végrehajtani — például XFA-specifikus metódust hívnak meg egy nem XFA-alapú űrlapon.

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

Tippek és legjobb gyakorlatok

  • Először a legspecifikusabb kivételtípust fogja el (például InvalidPasswordException), és csak végül adjon hozzá egy catch (PdfException) blokkot, mint tartalékot minden más esetben, amit a könyvtár kivált.
  • Ellenőrizze a(z) Form.IsXfa vagy Form.Type értéket XFA-specifikus metódusok hívása előtt, hogy elkerülje a(z) InvalidFormTypeOperationException előfordulását.
  • Keresse meg a betűtípusokat a(z) FontRepository.FindFont segítségével renderelés előtt, hogy a hiányzó betűtípusok kifejezetten kezelhetők legyenek, ahelyett, hogy kizárólag a kivételkezelésre támaszkodna.
  • Amikor egy váratlan PdfException eléri a legfelső szintű kezelőjét, hozzon létre egy CrashReportOptions a befogott kivétellel, és hívja meg a(z) ex.GenerateCrashReport(options) funkciót, hogy diagnosztikai jelentést készítsen a támogatási kérésekhez.
  • Mindig adja át a dokumentum jelszavát a(z) Document konstruktor túlterhelésen keresztül, ahelyett, hogy először megnyitná a fájlt és újrapróbálná.

Gyakori problémák

ProblémaOkJavítás
InvalidPasswordException dokumentum megnyitásakorHelytelen vagy hiányzó jelszó megadvaAdja át a helyes jelszót a Document(filename, password) konstruktorának
InvalidPdfFileFormatException dokumentum megnyitásakorA fájl nem PDF, vagy sérült vagy csonkoltEllenőrizze a fájlfejlécet, és szerezze be újra a forrásfájlt
FontNotFoundException a renderelés soránA kért betűtípus nincs telepítve, és nincs helyettesítő regisztrálvaRegisztráljon egy betűtípus forrást, vagy ellenőrizze a(z) FontRepository.Substitutions
UnsupportedFontTypeException a(z) FontRepository.OpenFont -tólA megadott fájl nem felismert betűtípusprogramEllenőrizze, hogy a fájl érvényes betűtípus-e, mielőtt megnyitná
InvalidFormTypeOperationException az űrlap műveletek soránXFA-specifikus metódus meghívva egy nem XFA űrlapon, vagy fordítvaEllenőrizze a(z) Form.IsXfa vagy Form.Type értéket, mielőtt típus-specifikus metódusokat hívna

FAQ

El kellene kapnom a PdfException-t vagy a konkrét alosztályt?

Kapd el a konkrét alosztályt, például a InvalidPasswordException-t, ha másképp szeretnél reagálni arra a hibára. Adj hozzá egy végső catch (PdfException) blokkot, mint tartalékot minden egyéb, a könyvtár által dobott hibához.

Minden PDF-specifikus kivétel a PdfException-ből származik?

Igen. A PdfTextDecodingException, IncorrectFontUsageException, InvalidPasswordException, InvalidPdfFileFormatException, FontNotFoundException, UnsupportedFontTypeException és a InvalidFormTypeOperationException mind a PdfException-ből származnak, amely maga a System.Exception-ből származik.

Mi a PdfExceptionMessages célja?

PdfExceptionMessages egy statikus osztály, amely központosítja a könyvtár kivételei és biztonsági diagnosztikái által felhozott üzenetkarakterláncokat, beleértve a DangerousFile üzenetet.

Készíthetek diagnosztikai jelentést, amikor kivétel fordul elő?

Igen. Hozz létre egy CrashReportOptions példányt a elkapott kivétellel, opcionálisan állíts be olyan tulajdonságokat, mint a ApplicationTitle és a CrashReportDirectory, majd hívd meg a GenerateCrashReport(options)-at a PdfException-on a részletes összeomlási jelentés írásához.


API Reference Összefoglaló

OsztályLeírás
PdfExceptionAlap kivétel a PDF-alkalmazás végrehajtása során keletkező hibákhoz
PdfTextDecodingExceptionKivétel dobódik, ha a szövegtartalmat nem lehet dekódolni
IncorrectFontUsageExceptionKivétel dobódik, ha egy szöveg-megjelenítő operátor jelenik meg, miközben a grafikai állapotban nincs beállítva betűtípus
InvalidPasswordExceptionKivétel akkor, amikor egy jelszóval védett műveletet próbálnak végrehajtani érvényes jelszó nélkül
InvalidPdfFileFormatExceptionKivétel, amikor egy adatfolyamot nem lehet PDF-ként megnyitni
FontNotFoundExceptionKivétel, amikor a kért betűtípust nem lehet megtalálni
UnsupportedFontTypeExceptionKivétel, amikor egy fájlt nem lehet betűtípusként megnyitni, mert a formátuma nem támogatott
InvalidFormTypeOperationExceptionKivétel, ha egy műveletet a helytelen űrlaptípuson próbálnak végrehajtani
PdfExceptionMessagesKözpontosított üzenetkarakterláncok, amelyeket a könyvtár kivételei és biztonsági diagnosztikái hoznak felszínre

Lásd még:

 Magyar