अपवाद संभालना
अपवाद प्रबंधन
यह गाइड दर्शाता है कि Aspose.PDF FOSS for .NET कैसे PdfException पर आधारित टाइप्ड एक्सेप्शन हायरार्की के माध्यम से विफलताओं को संकेत करता है, जो स्वयं System.Exception से व्युत्पन्न है, और प्रत्येक त्रुटि श्रेणी को कैसे पकड़ा जाए। लाइब्रेरी में प्रत्येक PDF-विशिष्ट अपवाद — एक खराब पासवर्ड, एक अपठनीय फ़ाइल, एक अनुपलब्ध फ़ॉन्ट, या एक अमान्य फ़ॉर्म ऑपरेशन — PdfException से व्युत्पन्न होते हैं, इसलिए केवल PdfException को पकड़ना किसी भी लाइब्रेरी-उठाए गए त्रुटि को रोकने के लिए पर्याप्त है, जबकि अधिक विशिष्ट catch ब्लॉकों से आप प्रत्येक विफलता मोड के प्रति अलग तरीके से प्रतिक्रिया दे सकते हैं।
पासवर्ड और सुरक्षा त्रुटियां
InvalidPasswordException तब फेंका जाता है जब वैध पासवर्ड प्रदान किए बिना पासवर्ड-प्रोटेक्टेड ऑपरेशन करने का प्रयास किया जाता है, जैसे गलत पासवर्ड के साथ एन्क्रिप्टेड दस्तावेज़ खोलना।
try
{
var doc = new Document("encrypted.pdf", "wrong-password");
}
catch (InvalidPasswordException ex)
{
Console.WriteLine($"Password rejected: {ex.Message}");
}फ़ाइल फ़ॉर्मेट त्रुटियां
InvalidPdfFileFormatException तब फेंका जाता है जब कोई स्ट्रीम PDF के रूप में नहीं खोली जा सकती — खराब हेडर, कटे हुए फ़ाइल, या ऐसी सामग्री जो बिल्कुल भी PDF के रूप में पहचानी नहीं जाती।
try
{
var doc = new Document("not-a-pdf.txt");
}
catch (InvalidPdfFileFormatException ex)
{
Console.WriteLine($"Not a valid PDF: {ex.Message}");
}फ़ॉन्ट त्रुटियां
फ़ॉन्ट-संबंधी विफलताएँ तीन अलग-अलग अपवाद प्रकारों में विभाजित होती हैं, यह इस पर निर्भर करता है कि क्या गलती हुई:
FontNotFoundException— कोई सिस्टम फ़ॉन्ट या कस्टम-फ़ॉन्ट स्रोत अनुरोधित फ़ॉन्ट नाम से मेल नहीं खाता।UnsupportedFontTypeException— फ़ॉन्ट के रूप में प्रदान की गई फ़ाइल मान्य फ़ॉन्ट प्रोग्राम नहीं है।IncorrectFontUsageException— एक टेक्स्ट-प्रदर्शन ऑपरेटर कंटेंट स्ट्रीम में दिखाई देता है जबकि वर्तमान ग्राफ़िक्स स्टेट में कोई फ़ॉन्ट सेट नहीं है।
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}");
}टेक्स्ट निष्कर्षण त्रुटियाँ
PdfTextDecodingException तब फेंका जाता है जब टेक्स्ट सामग्री को डिकोड नहीं किया जा सकता, उदाहरण के लिए जब फ़ॉन्ट द्वारा संदर्भित एन्कोडिंग अनुपलब्ध या दोषपूर्ण हो।
try
{
var extractor = new PdfExtractor(doc);
extractor.GetText("output.txt");
}
catch (PdfTextDecodingException ex)
{
Console.WriteLine($"Text decoding failed: {ex.Message}");
}फ़ॉर्म प्रकार त्रुटियाँ
InvalidFormTypeOperationException तब फेंका जाता है जब किसी गलत.
try
{
var form = new Form(doc);
form.AssignXfa(xmlData);
}
catch (InvalidFormTypeOperationException ex)
{
Console.WriteLine($"Wrong form type: {ex.Message}");
}टिप्स और सर्वोत्तम प्रथाएँ
- सबसे विशिष्ट अपवाद प्रकार को पहले पकड़ें (उदाहरण के लिए,
InvalidPasswordException) औरcatch (PdfException)ब्लॉक को केवल लाइब्रेरी द्वारा उठाए गए अन्य सभी मामलों के लिए एक fallback के रूप में अंत में जोड़ें। - XFA-विशिष्ट मेथड्स को कॉल करने से पहले
Form.IsXfaयाForm.Typeजाँचें ताकिInvalidFormTypeOperationExceptionसे बचा जा सके। - रेंडरिंग से पहले
FontRepository.FindFontके साथ फ़ॉन्ट्स खोजें ताकि लापता फ़ॉन्ट्स को स्पष्ट रूप से संभाला जा सके, बजाय केवल अपवाद हैंडलिंग पर निर्भर रहने के। - जब कोई अप्रत्याशित
PdfExceptionआपके टॉप-लेवल हैंडलर तक पहुँचता है, तो पकड़े गए अपवाद के साथ एकCrashReportOptionsबनाएँ औरex.GenerateCrashReport(options)को कॉल करें ताकि सपोर्ट अनुरोधों के लिए एक डायग्नोस्टिक रिपोर्ट कैप्चर की जा सके। - फ़ाइल को पहले खोलने और पुनः प्रयास करने के बजाय हमेशा दस्तावेज़ पासवर्ड को
Documentकंस्ट्रक्टर ओवरलोड के माध्यम से पास करें।
सामान्य समस्याएँ
| समस्या | कारण | समाधान |
|---|---|---|
दस्तावेज़ खोलते समय InvalidPasswordException | गलत या अनुपलब्ध पासवर्ड प्रदान किया गया | सही पासवर्ड को Document(filename, password) कन्स्ट्रक्टर को पास करें |
दस्तावेज़ खोलते समय InvalidPdfFileFormatException | फ़ाइल PDF नहीं है, या क्षतिग्रस्त या अधूरी है | फ़ाइल हेडर को सत्यापित करें और स्रोत फ़ाइल को पुनः प्राप्त करें |
FontNotFoundException रेंडरिंग के दौरान | अनुरोधित फ़ॉन्ट स्थापित नहीं है और कोई विकल्प पंजीकृत नहीं है | फ़ॉन्ट स्रोत पंजीकृत करें या FontRepository.Substitutions जांचें |
UnsupportedFontTypeException से FontRepository.OpenFont | प्रदान की गई फ़ाइल एक मान्य फ़ॉन्ट प्रोग्राम नहीं है | फ़ाइल को खोलने से पहले पुष्टि करें कि वह वैध फ़ॉन्ट है |
InvalidFormTypeOperationException फ़ॉर्म संचालन पर | XFA-विशिष्ट विधि को गैर-XFA फ़ॉर्म पर कॉल किया गया, या इसके विपरीत | टाइप-विशिष्ट विधियों को कॉल करने से पहले Form.IsXfa या Form.Type जांचें |
FAQ
क्या मुझे PdfException को पकड़ना चाहिए या विशिष्ट उपवर्ग को?
जब आपको उस विफलता पर अलग तरह से प्रतिक्रिया देनी हो, तो InvalidPasswordException जैसे विशिष्ट उपवर्ग को पकड़ें। अन्य लाइब्रेरी-उत्पन्न त्रुटियों के लिए fallback के रूप में एक अंतिम catch (PdfException) ब्लॉक जोड़ें।
क्या सभी PDF-विशिष्ट अपवाद PdfException से व्युत्पन्न होते हैं?
हां। PdfTextDecodingException, IncorrectFontUsageException, InvalidPasswordException, InvalidPdfFileFormatException, FontNotFoundException, UnsupportedFontTypeException, और InvalidFormTypeOperationException सभी PdfException से व्युत्पन्न हैं, जो स्वयं System.Exception से व्युत्पन्न है।
PdfExceptionMessages किस लिए है?
PdfExceptionMessages एक स्थैतिक क्लास है जो लाइब्रेरी के अपवादों और सुरक्षा निदान द्वारा प्रदर्शित संदेश स्ट्रिंग्स को केंद्रीकृत करता है, जिसमें DangerousFile संदेश भी शामिल है।
क्या मैं कोई अपवाद होने पर एक निदान रिपोर्ट उत्पन्न कर सकता हूँ?
हां। पकड़े गए अपवाद के साथ एक CrashReportOptions इंस्टेंस बनाएं, वैकल्पिक रूप से ApplicationTitle और CrashReportDirectory जैसी प्रॉपर्टीज़ सेट करें, और विस्तृत क्रैश रिपोर्ट लिखने के लिए PdfException पर GenerateCrashReport(options) कॉल करें।
API Reference सारांश
| क्लास | विवरण |
|---|---|
PdfException | PDF एप्लिकेशन निष्पादन के दौरान त्रुटियों के लिए बेस अपवाद |
PdfTextDecodingException | जब टेक्स्ट सामग्री को डिकोड नहीं किया जा सकता तो फेंका जाता है |
IncorrectFontUsageException | जब ग्राफ़िक्स स्टेट में कोई फ़ॉन्ट सेट नहीं होने पर टेक्स्ट-दिखाने वाला ऑपरेटर प्रकट होता है तो फेंका जाता है |
InvalidPasswordException | जब वैध पासवर्ड के बिना पासवर्ड-संरक्षित ऑपरेशन करने का प्रयास किया जाता है, तो यह थ्रो किया जाता है |
InvalidPdfFileFormatException | जब किसी स्ट्रीम को PDF के रूप में नहीं खोला जा सकता, तो यह थ्रो किया जाता है |
FontNotFoundException | जब अनुरोधित फ़ॉन्ट नहीं मिल पाता, तो यह थ्रो किया जाता है |
UnsupportedFontTypeException | जब किसी फ़ाइल को फ़ॉन्ट के रूप में नहीं खोला जा सकता क्योंकि उसका फ़ॉर्मेट असमर्थित है, तो यह थ्रो किया जाता है |
InvalidFormTypeOperationException | जब कोई ऑपरेशन गलत फ़ॉर्म प्रकार पर किया जाता है तो यह थ्रो किया जाता है |
PdfExceptionMessages | लाइब्रेरी के अपवादों और सुरक्षा निदान द्वारा उत्पन्न केंद्रीकृत संदेश स्ट्रिंग्स |