कैसे बनाएं दस्तावेज़ Python में जनरेटेड कम्पैटिबिलिटी मॉड्यूल के साथ
Aspose.PDF FOSS for Python एक generated Compatibility सबपैकेज (aspose_pdf.generated) प्रदान करता है जो मुख्य API सतह के एक स्थिर उपसमुच्चय को प्रतिबिंबित करता है — एक Document क्लास जिसमें कोर लाइफ़साइकल ऑपरेशन्स होते हैं, साथ ही UnsignedContent/UnsignedContentAbsorber और PdfAValidateOptions/PdfAValidationResult। यह उन कॉलर्स के लिए मौजूद है जो इस संकीर्ण सतह को स्पष्ट रूप से चाहते हैं न कि पूर्ण-फ़ीचर टॉप-लेवल क्लासेज़ को, और इसके क्लासेज़ को import aspose_pdf द्वारा स्वतः इम्पोर्ट नहीं किया जाता — आप उन्हें सीधे aspose_pdf.generated.* से इम्पोर्ट करते हैं। पैकेज शुद्ध Python है और नीचे दिए गए कमांड से इंस्टॉल किया जाता है।
स्टेप-बाय-स्टेप गाइड
चरण 1: पैकेज स्थापित करें
इंस्टॉल करें Aspose.PDF FOSS पैकेज:
git clone https://github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python.git
cd Aspose-PDF-FOSS-for-Python
pip install -e .जनरेट किए गए Document को इम्पोर्ट करके इंस्टॉलेशन की जाँच करें और एक पुष्टि संदेश प्रिंट करें:
import aspose_pdf
from aspose_pdf.generated.document import Document
print("aspose-pdf-foss-for-python is ready.")चरण 2: आवश्यक क्लासेस को आयात करें
generated संगतता क्लासेस aspose_pdf.generated.document, aspose_pdf.generated.forms, और aspose_pdf.generated.pdfa में स्थित हैं — उन्हें उप-मॉड्यूल द्वारा स्पष्ट रूप से आयात करें:
import aspose_pdf
from aspose_pdf.generated.document import Document
from aspose_pdf.generated.forms import UnsignedContent, UnsignedContentAbsorber
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResultचरण 3: एक दस्तावेज़ बनाएं और लोड करें
Document(source) स्रोत प्रदान किए जाने पर तुरंत लोड हो जाता है; बिना तर्क के Document() को कॉल करने से एक खाली इंस्टेंस बनता है जिसे आप बाद में load_from से लोड कर सकते हैं। दोनों फ़ाइल पथ, bytes, या बाइनरी स्ट्रीम स्वीकार करते हैं:
from aspose_pdf.generated.document import Document
document = Document("report.pdf")
print(f"Loaded {len(document.pages)} page(s)")
empty_doc = Document()
empty_doc.load_from("report.pdf")चरण 7: असाइन न किए गए फ़ॉर्म सामग्री को निकालें
UnsignedContentAbsorber उन पृष्ठों, फ़ॉर्म फ़ील्ड्स और एनोटेशन को निकालता है जो डिजिटल सिग्नेचर का हिस्सा नहीं रहे हैं। निष्कर्षण चलाने के लिए extract() को कॉल करें, यह जांचने के लिए कि यह चल चुका है या नहीं has_extracted() को कॉल करें, और पुनः निकालने के बिना परिणाम फिर से प्राप्त करने के लिए get_extracted() को कॉल करें:
from aspose_pdf.generated.forms import UnsignedContentAbsorber
absorber = UnsignedContentAbsorber()
unsigned = absorber.extract()
print(f"Unsigned pages: {len(unsigned.pages)}")
print(f"Unsigned form fields: {len(unsigned.form_fields)}")
if absorber.has_extracted():
same_result = absorber.get_extracted()चरण 8: एक UnsignedContent कंटेनर मैन्युअली बनाएं
UnsignedContent एक साधारण कंटेनर भी है जिसे आप स्वयं add_page, add_form_field, और add_annotation से भर सकते हैं — प्रत्येक का एक मिलता-जुलता remove_* मेथड है, और reset() एक साथ सभी तीन कलेक्शनों को साफ़ करता है:
from aspose_pdf.generated.forms import UnsignedContent
content = UnsignedContent()
content.add_page("page-1")
content.add_annotation("signature-placeholder")
print(content) # UnsignedContent(pages=1, form_fields=0, annotations=1)
content.remove_annotation("signature-placeholder")
content.reset()चरण 9: PDF/A सत्यापन को कॉन्फ़िगर और चलाएँ
PdfAValidateOptions एक सत्यापन रन के लिए इनपुट और सेटिंग्स एकत्र करता है। add_input(source) एक इनपुट को रजिस्टर करता है, set_option(key, value) एक नामित विकल्प को संग्रहीत करता है, और get_options() संग्रहीत विकल्पों की एक प्रति लौटाता है। PdfAValidationResult परिणाम को रखता है — add_error(message) परिणाम को अमान्य चिह्नित करता है और errors में जोड़ता है, और to_dict() is_valid और errors को एक साधारण शब्दकोश के रूप में रेंडर करता है:
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult
options = PdfAValidateOptions()
options.add_input("report.pdf")
options.set_option("pdfa_version", "1b")
print(options.get_options())
result = PdfAValidationResult()
result.add_error("Font 'Arial' is not embedded")
print(result.is_valid) # False
print(result.to_dict())सामान्य समस्याएँ और समाधान
ImportError or AttributeError पहुँचते समय aspose_pdf.generated
generated सबपैकेज को import aspose_pdf द्वारा पुनः निर्यात नहीं किया गया है — प्रत्येक क्लास को उसके विशिष्ट सबमॉड्यूल से आयात करें, उदाहरण के लिए from aspose_pdf.generated.document import Document, बजाय इसके कि आप aspose_pdf.generated.Document को एक साधारण import aspose_pdf के बाद काम करने की अपेक्षा करें।
जेनरेटेड को भ्रमित करना Document मुख्य के साथ aspose_pdf.Document
aspose_pdf.Document (import aspose_pdf द्वारा पुनः निर्यात किया गया शीर्ष-स्तरीय क्लास) की सतह अधिक विस्तृत है — यह validate_pdfa, iter_pages, और redact_text जैसे मेथड जोड़ता है जो aspose_pdf.generated.document.Document लागू नहीं करता। यदि किसी मेथड की जेनरेटेड Document में कमी है, तो जांचें कि क्या वह शीर्ष-स्तरीय Document क्लास से संबंधित है।
save() raises AsposePdfException: Cannot save a disposed document
close()/dispose() दस्तावेज़ की आंतरिक स्थिति को स्थायी रूप से रिलीज़ करता है — एक नष्ट किया गया Document बाद में सहेजा, ऑप्टिमाइज़ या मरम्मत नहीं किया जा सकता। शेष सभी संचालन close() को कॉल करने से पहले करें, या स्रोत से नई Document(...) कॉल के साथ पुनः लोड करें।
change_passwords raises PdfSecurityException: Document is not encrypted
change_passwords केवल पहले से एन्क्रिप्टेड दस्तावेज़ पर पासवर्ड को घुमाता है। पहले encrypt(password) को कॉल करें, या पासवर्ड बदलने का प्रयास करने से पहले document.is_encrypted जांचें।
PdfAValidationResult.add_error raises TypeError
add_error को एक str तर्क चाहिए। add_error को पास करने से पहले अपवाद वस्तुओं या अन्य त्रुटि विवरणों को स्ट्रिंग (str(error)) में बदलें।
अक्सर पूछे जाने वाले प्रश्न
मुख्य aspose_pdf.Document के साथ aspose_pdf.generated क्यों मौजूद है?
यह Aspose.PDF API के एक संकीर्ण, स्थिर उपसमुच्चय को प्रतिबिंबित करता है जो उस घटित सतह के विरुद्ध लिखे कोड के लिए है। नया कोड जो विशेष रूप से इस संगतता उपसमुच्चय की आवश्यकता नहीं रखता, आमतौर पर शीर्ष-स्तर के aspose_pdf.Document का उपयोग करना चाहिए, जो अधिक कार्यों का समर्थन करता है (PDF/A रूपांतरण, पृष्ठ पुनरावृत्ति, पाठ संशोधन, और अन्य)।
क्या UnsignedContentAbsorber.extract() स्कैन करने के लिए एक Document स्वीकार करता है?
extract() positional और keyword arguments को स्वीकार करता है जो लौटाए गए UnsignedContent के pages, form_fields, और annotations संग्रहों को भरने के लिए उपयोग होते हैं — उन संग्रहों को keyword arguments के रूप में पास करें जिन्हें आप प्रदर्शित करना चाहते हैं (pages=, form_fields=, annotations=)।
यदि मैं कुछ भी निकालने से पहले UnsignedContentAbsorber पर reset() को कॉल करता हूँ तो क्या होगा?
यह पहले से निकाले गए किसी भी परिणाम को साफ़ कर देता है। फिर get_extracted() None लौटाता है और has_extracted() False लौटाता रहता है जब तक कि extract() फिर से कॉल न किया जाए।
क्या PdfAValidateOptions.add_input को एक से अधिक बार कॉल किया जा सकता है?
हाँ — प्रत्येक कॉल inputs सूची में एक और प्रविष्टि जोड़ता है, और यह self लौटाता है, इसलिए कॉलों को श्रृंखलाबद्ध किया जा सकता है: options.add_input("a.pdf").add_input("b.pdf")।
क्या close() उत्पन्न Document पर dispose() से अलग है?
नहीं — close() एक प्रत्यक्ष उपनाम है जो dispose() को समान तर्कों के साथ कॉल करता है; दोनों में से कोई भी नाम दस्तावेज़ के संसाधनों को रिलीज़ करता है।