Zpracování výjimek
Zpracování výjimek
Tento průvodce ukazuje, jak Aspose.PDF FOSS pro .NET signalizuje selhání prostřednictvím typizované hierarchie výjimek kořeněné v PdfException, která sama dědí z System.Exception, a jak zachytit každou kategorii chyby. Každá specifická výjimka PDF v knihovně — špatné heslo, nečitelný soubor, chybějící font nebo neplatná operace formuláře — dědí z PdfException, takže zachycení pouze PdfException stačí k zachycení jakékoli chyby vyvolané knihovnou, zatímco konkrétnější bloky catch vám umožní reagovat odlišně na každý režim selhání.
Chyby hesla a zabezpečení
InvalidPasswordException je vyvolána, když je provedena operace chráněná heslem bez zadání platného hesla, například otevření šifrovaného dokumentu se špatným heslem.
try
{
var doc = new Document("encrypted.pdf", "wrong-password");
}
catch (InvalidPasswordException ex)
{
Console.WriteLine($"Password rejected: {ex.Message}");
}Chyby formátu souboru
InvalidPdfFileFormatException je vyvolána, když nelze otevřít proud jako PDF — špatná hlavička, oříznutý soubor nebo obsah, který není vůbec rozpoznatelný jako PDF.
try
{
var doc = new Document("not-a-pdf.txt");
}
catch (InvalidPdfFileFormatException ex)
{
Console.WriteLine($"Not a valid PDF: {ex.Message}");
}Chyby fontů
Selhání související s fonty spadají do tří odlišných typů výjimek, v závislosti na tom, co se pokazilo:
FontNotFoundException— žádný systémový font ani zdroj vlastního fontu neodpovídá požadovanému názvu fontu.UnsupportedFontTypeException— soubor poskytnutý jako font není rozpoznatelný fontový program.IncorrectFontUsageException— operátor zobrazující text se objeví v datovém proudu obsahu, zatímco není v aktuálním grafickém stavu nastaven žádný font.
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}");
}Chyby při extrakci textu
PdfTextDecodingException je vyvolána, když nelze dekódovat textový obsah, například když chybí nebo je poškozeno kódování odkazované fontem.
try
{
var extractor = new PdfExtractor(doc);
extractor.GetText("output.txt");
}
catch (PdfTextDecodingException ex)
{
Console.WriteLine($"Text decoding failed: {ex.Message}");
}Chyby typu formuláře
InvalidFormTypeOperationException je vyvolána, když je operace provedena na nesprávném typu formuláře — například volání XFA-specifické metody na formuláři, který není založen na XFA.
try
{
var form = new Form(doc);
form.AssignXfa(xmlData);
}
catch (InvalidFormTypeOperationException ex)
{
Console.WriteLine($"Wrong form type: {ex.Message}");
}Tipy a osvědčené postupy
- Chyťte nejspecifičtější typ výjimky jako první (například
InvalidPasswordException) a přidejte konečný blokcatch (PdfException)pouze jako záložní řešení pro vše ostatní, co knihovna vyvolá. - Zkontrolujte
Form.IsXfaneboForm.Typepřed voláním metod specifických pro XFA, abyste se vyhnuliInvalidFormTypeOperationException. - Vyhledejte písma pomocí
FontRepository.FindFontpřed vykreslováním, aby chybějící písma mohla být zpracována explicitně, místo aby se spoléhalo pouze na zpracování výjimek. - Když nečekaná
PdfExceptiondorazí do vašeho handleru na nejvyšší úrovni, vytvořteCrashReportOptionss zachycenou výjimkou a zavolejteex.GenerateCrashReport(options)pro zachycení diagnostické zprávy pro požadavky na podporu. - Vždy předávejte heslo dokumentu přes přetížení konstruktoru
Documentmísto toho, abyste nejprve otevřeli soubor a pak znovu zkoušeli.
Běžné problémy
| Problém | Příčina | Oprava |
|---|---|---|
InvalidPasswordException při otevření dokumentu | Zadáno nesprávné nebo chybějící heslo | Předat správné heslo konstruktoru Document(filename, password) |
InvalidPdfFileFormatException při otevření dokumentu | Soubor není PDF, nebo je poškozený nebo zkrácený | Ověřte hlavičku souboru a znovu získejte zdrojový soubor |
FontNotFoundException během vykreslování | Požadované písmo není nainstalováno a žádná náhrada není registrována | Zaregistrujte zdroj písma nebo zkontrolujte FontRepository.Substitutions |
UnsupportedFontTypeException z FontRepository.OpenFont | Poskytnutý soubor není rozpoznán jako fontový program | Před otevřením potvrďte, že soubor je platné písmo |
InvalidFormTypeOperationException při operacích s formuláři | Metoda specifická pro XFA byla volána na ne-XFA formuláři, nebo naopak | Zkontrolujte Form.IsXfa nebo Form.Type před voláním metod specifických pro typ |
FAQ
Mám zachytit PdfException nebo konkrétní podtřídu?
Zachyťte konkrétní podtřídu, například InvalidPasswordException, když potřebujete na tuto chybu reagovat odlišně. Přidejte závěrečný blok catch (PdfException) jako záložní řešení pro jakoukoli jinou chybu vyvolanou knihovnou.
Jsou všechny výjimky specifické pro PDF odvozeny od PdfException?
Ano. PdfTextDecodingException, IncorrectFontUsageException, InvalidPasswordException, InvalidPdfFileFormatException, FontNotFoundException, UnsupportedFontTypeException a InvalidFormTypeOperationException jsou všechny odvozeny od PdfException, který sám je odvozen od System.Exception.
K čemu slouží PdfExceptionMessages?
PdfExceptionMessages je statická třída, která centralizuje řetězce zpráv zobrazované výjimkami knihovny a diagnostikou zabezpečení, včetně zprávy DangerousFile.
Mohu vytvořit diagnostickou zprávu při výskytu výjimky?
Ano. Vytvořte instanci CrashReportOptions s zachycenou výjimkou, volitelně nastavte vlastnosti jako ApplicationTitle a CrashReportDirectory a zavolejte GenerateCrashReport(options) na PdfException, abyste zapsali podrobnou hlášku o pádu.
API Reference Shrnutí
| Třída | Popis: |
|---|---|
PdfException | Základní výjimka pro chyby během provádění PDF aplikace |
PdfTextDecodingException | Vyvoláno, když nelze dekódovat textový obsah |
IncorrectFontUsageException | Vyvoláno, když se v grafickém stavu objeví operátor pro zobrazování textu bez nastaveného písma |
InvalidPasswordException | Vyvoláno, když je provedena operace chráněná heslem bez platného hesla |
InvalidPdfFileFormatException | Vyvoláno, když není možné otevřít stream jako PDF |
FontNotFoundException | Vyvoláno, když nelze najít požadované písmo |
UnsupportedFontTypeException | Vyvoláno, když soubor nelze otevřít jako písmo, protože jeho formát není podporován |
InvalidFormTypeOperationException | Vyvoláno, když je operace provedena na nesprávném typu formuláře |
PdfExceptionMessages | Centralizované řetězce zpráv zobrazované výjimkami knihovny a diagnostikou zabezpečení |