परिचय
Aspose.PDF FOSS Python के लिए एक aspose_pdf.generated सबपैकेज शामिल करता है जिसमें चार मॉड्यूल हैं: document.py, forms.py, pdfa.py, और security.py. इनमें से कोई भी शीर्ष-स्तर के aspose_pdf पैकेज से पुनः निर्यात नहीं किया गया है, इसलिए इस गाइड में प्रत्येक क्लास को उसके पूर्ण डॉटेड पथ से इम्पोर्ट किया जाता है — from aspose_pdf.generated.document import Document, न कि from aspose_pdf import Document.
चार मॉड्यूल दो विभिन्न दृष्टिकोण अपनाते हैं। generated.document, generated.forms और generated.pdfa प्रत्येक अपने स्वयं के क्लासेस को परिभाषित करते हैं: स्वतंत्र कार्यान्वयन जो मुख्य पैकेज के Document, UnsignedContent/UnsignedContentAbsorber, और PdfAValidateOptions/PdfAValidationResult की संरचना को प्रतिबिंबित करते हैं — उस प्रतिबिंबित नेमस्पेस लेआउट के विरुद्ध लिखे कोड के लिए उपयोगी, लेकिन उपनामों के बजाय वास्तविक, अलग क्लास सेट। दूसरी ओर, generated.security बिल्कुल भी पुनः कार्यान्वयन नहीं करता: यह CompromiseCheckResult, SignaturesCompromiseDetector, और validation enums को सीधे aspose_pdf.security और aspose_pdf.validation से इम्पोर्ट करता है और पुनः निर्यात करता है, जिससे दोनों इम्पोर्ट पाथ समान क्लास ऑब्जेक्ट की ओर इंगित करते हैं।
यह गाइड चारों को कवर करता है, और स्पष्ट रूप से बताता है कि generated क्लास कब अपने मुख्य-पैकेज के समान नाम वाले समकक्ष से अलग व्यवहार करती है — Document और UnsignedContentAbsorber दोनों दो स्थानों पर दो अलग-अलग कार्यान्वयनों के साथ मौजूद हैं, जो वह चीज़ है जिसे केवल नाम से इम्पोर्ट करने पर आसानी से गलत समझा जा सकता है।
Aspose.PDF FOSS Python के लिए एक Python पैकेज है, aspose-pdf-foss-for-python, जो MIT लाइसेंस के तहत जारी किया गया है, और इसे Python 3.11 या बाद का संस्करण चाहिए। इसका शीर्ष-स्तर मॉड्यूल नाम aspose_pdf है; इंस्टॉलेशन के लिए नीचे त्वरित प्रारम्भ अनुभाग देखें। कोर पैकेज केवल cryptography और asn1crypto पर निर्भर करता है; वैकल्पिक एक्स्ट्रा Pillow-आधारित इमेज डिकोडिंग, Brotli-आधारित WOFF2 फ़ॉन्ट समर्थन, और HarfBuzz-आधारित जटिल टेक्स्ट लेआउट जोड़ते हैं।
मुख्य विशेषताएँ
एक द्वितीय दस्तावेज़ कार्यान्वयन
aspose_pdf.generated.document.Document मुख्य aspose_pdf.Document के समान कोर लाइफ़साइकल को लागू करता है — load_from(), save(), encrypt()/decrypt()/change_passwords(), optimize()/optimize_resources(), repair(), flatten(), और validate()/check() — उसी aspose_pdf.engine.simple_pdf.SimplePdf इंजन के ऊपर। यह मुख्य Document का एक उपसमुच्चय दर्शाता है: इसमें pages.add()-स्टाइल पेज ऑथरिंग नहीं है, न ही form/outlines/attachments हैं, और न ही render_page() है। क्योंकि क्लास नाम मुख्य पैकेज के Document से टकराता है, जब दोनों को एक ही मॉड्यूल में आवश्यक हो तो इसे उपनाम के तहत इम्पोर्ट करें।
from aspose_pdf import Document
from aspose_pdf.generated.document import Document as CompatDocument
with Document() as document:
document.pages.add()
document.save("source.pdf")
compat = CompatDocument()
compat.load_from("source.pdf")
print(compat.page_count, compat.is_encrypted)
compat.optimize(compress_images=True)
compat.save("optimized.pdf", overwrite=True)
compat.dispose()
अपरहस्ताक्षरित सामग्री को पैकेज करना
aspose_pdf.generated.forms.UnsignedContentAbsorber और UnsignedContent अपरहस्ताक्षरित फॉर्म फ़ील्ड, पेज और एनोटेशन के लिए एक कंटेनर प्रदान करते हैं। यह शीर्ष-स्तर के aspose_pdf.UnsignedContentAbsorber(document) से अलग है, जो एक वास्तविक Document लेता है और उसके form_fields/annotations को उन आइटमों के लिए फ़िल्टर करता है जिनका is_signed/signed एट्रिब्यूट फॉल्सी होता है। generated.forms संस्करण बिल्कुल भी डॉक्यूमेंट नहीं लेता — extract() बस वह सब पैकेज करता है जो आप pages, form_fields, और annotations को कीवर्ड आर्ग्यूमेंट्स के रूप में पास करते हैं, एक UnsignedContent इंस्टेंस में, जो तब उपयोगी होता है जब अपरहस्ताक्षरित आइटम पहले से कहीं और इकट्ठा किए जा चुके हों और केवल साझा कंटेनर और उसके add_page()/remove_page()-स्टाइल म्यूटेटर्स की आवश्यकता हो।
from aspose_pdf.generated.forms import UnsignedContentAbsorber
absorber = UnsignedContentAbsorber()
content = absorber.extract(
form_fields=["signature_field", "initials_field"],
annotations=["review_stamp"],
)
print(absorber.has_extracted(), content.form_fields, content.annotations)
content.add_page("page-1")
absorber.reset()
print(absorber.get_extracted())
PDF/A मान्यकरण विकल्प और परिणाम
aspose_pdf.generated.pdfa.PdfAValidateOptions मान्यकरण सेटिंग्स और इनपुट स्रोतों को एकत्र करता है; PdfAValidationResult परिणाम को एकत्र करता है। PdfAValidateOptions.add_input() इसे स्वीकार करने से पहले Path.exists() के साथ स्ट्रिंग पाथ की जाँच करता है और यदि फ़ाइल मौजूद नहीं है तो PdfIOException उठाता है, ताकि कॉलर को तुरंत खराब इनपुट पाथ के बारे में पता चल सके न कि मान्यकरण समय पर।
from aspose_pdf import Document
from aspose_pdf.exceptions import PdfIOException
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult
with Document() as document:
document.pages.add()
document.save("candidate.pdf")
options = PdfAValidateOptions()
options.set_option("pdfa_version", "PDF/A-2b")
options.add_input("candidate.pdf")
print(options.get_options(), options.inputs)
try:
options.add_input("missing.pdf")
except PdfIOException as error:
print(f"rejected: {error}")
result = PdfAValidationResult()
result.add_error("Missing /OutputIntent for PDF/A-2b")
print(result.is_valid, result.to_dict())
पुनः-निर्यातित सुरक्षा और मान्यकरण प्रकार
aspose_pdf.generated.security CompromiseCheckResult और SignaturesCompromiseDetector को सीधे aspose_pdf.security से इम्पोर्ट करता है, और CertificationLevel, RevocationStatus, TrustStatus, ValidationMethod, ValidationMode, ValidationOptions, ValidationResult, और ValidationStatus को aspose_pdf.validation से। Document और UnsignedContentAbsorber के विपरीत, यहाँ कोई स्वतंत्र पुनः-कार्यान्वयन नहीं है — दोनों इम्पोर्ट पाथ एक ही ऑब्जेक्ट लौटाते हैं।
from aspose_pdf.generated.security import SignaturesCompromiseDetector
from aspose_pdf.security import SignaturesCompromiseDetector as CanonicalDetector
assert SignaturesCompromiseDetector is CanonicalDetector
detector = SignaturesCompromiseDetector(document=None)
result = detector.check()
print(result.compromised, result.reasons)
त्वरित प्रारम्भ
पैकेज स्थापित करें, फिर मुख्य Document के साथ एक दस्तावेज़ बनाएं, उसे सहेजें, और इसे generated.pdfa विकल्पों और परिणाम वस्तुओं के माध्यम से चलाएँ।
git clone https://github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python.git
cd Aspose-PDF-FOSS-for-Python
pip install -e .from aspose_pdf import Document
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult
with Document() as document:
page = document.pages.add()
page.add_text("PDF/A candidate", x=72, y=740, font_size=20)
document.save("candidate.pdf")
options = PdfAValidateOptions()
options.set_option("pdfa_version", "PDF/A-2b")
options.add_input("candidate.pdf")
result = PdfAValidationResult()
if not options.inputs:
result.add_error("No inputs registered")
print(result.to_dict())
समर्थित फ़ॉर्मेट्स
| फ़ॉर्मेट | एक्सटेंशन | पढ़ें | लिखें |
|---|---|---|---|
| हाँ | हाँ |
PDF पढ़ना और लिखना Aspose.PDF FOSS है Python की मुख्य कार्यक्षमता के लिए। इस गाइड में प्रत्येक क्लास — मुख्य Document, generated.document.Document मिरर, और PDF/A हेल्पर्स — साझा SimplePdf इंजन के माध्यम से PDF इनपुट और आउटपुट पर कार्य करती है; aspose_pdf.generated यह बदलता है कि आप कौन सी क्लास आयात करते हैं, न कि कौन सा फ़ाइल फ़ॉर्मेट प्रोसेस किया जा रहा है।
ओपन सोर्स & लाइसेंसिंग
Aspose.PDF FOSS Python के लिए MIT लाइसेंस के तहत जारी किया गया है: कोई उपयोग प्रतिबंध नहीं, कोई रनटाइम शुल्क नहीं, और व्यावसायिक या व्यक्तिगत उपयोग के लिए कोई पंजीकरण आवश्यकताएँ नहीं। स्रोत कोड github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python पर होस्ट किया गया है, और पैकेज PyPI पर aspose-pdf-foss-for-python के रूप में प्रकाशित किया गया है।