डेटा प्रिमिटिव्स और XMP मेटाडेटा
डेटा प्रिमिटिव्स और XMP मेटाडेटा
Aspose.PDF FOSS for Python अपनी उच्च-स्तरीय API — Document, Page, और एनोटेशन व फॉर्म क्लासेस — को aspose_pdf.engine.data में परिभाषित छोटे प्रिमिटिव डेटा टाइप्स के ऊपर बनाता है। आप इनमें से अधिकांश को सीधे बनाना शायद ही कभी करेंगे, लेकिन ये लगातार प्रॉपर्टी टाइप्स और रिटर्न वैल्यूज़ के रूप में प्रकट होते हैं: किसी पेज की रिसोर्सेज डिक्शनरी PdfName वैल्यूज़ द्वारा कुंजीबद्ध होती है, कलर्स Color इंस्टेंस होते हैं, और Document.xmp_metadata एक XmpPacket लौटाता है। यह गाइड ऑब्जेक्ट-आइडेंटिटी प्रिमिटिव्स, प्रिमिटिव वैल्यू रैपर्स, Color, टेक्स्ट-एन्कोडिंग एनम्स, और XMP मेटाडेटा मॉडल का परिचय कराता है।
ऑब्जेक्ट आइडेंटिटी और ऑब्जेक्ट रजिस्ट्री
PdfObjectID एक PDF फ़ाइल में अप्रत्यक्ष ऑब्जेक्ट को उसके object_number और generation_number द्वारा पहचानता है। PdfObjectRegistry इन पहचानकर्ताओं को असाइन करता है और ट्रैक करता है जैसे ही ऑब्जेक्ट्स सीरियलाइज़ होते हैं, और PdfTrailerable वह साझा कॉन्ट्रैक्ट है उन ऑब्जेक्ट्स के लिए जो PDF ट्रेलर में लिखे जाने वाले डिक्शनरी को उत्पन्न कर सकते हैं।
import aspose_pdf
from aspose_pdf.engine.data import PdfObjectRegistry
registry = PdfObjectRegistry()
# register() assigns a PdfObjectID to a serializable object
object_id = registry.register(some_pdf_object)
print(object_id.object_number, object_id.generation_number)
# get() resolves an object back from its PdfObjectID
resolved = registry.get(object_id)प्रिमिटिव वैल्यू रैपर्स
PdfNumber और PdfName कच्चे PDF मानों को टाइप किए गए Python ऑब्जेक्ट्स में रैप करते हैं। PdfNumber अपना संख्यात्मक value को एक नेटिव Python int या float के रूप में रखता है; PdfName एक name स्ट्रिंग रखता है और लो-लेवल ऑब्जेक्ट मॉडल में डिक्शनरी कुंजियों के लिए उपयोग किया जाने वाला प्रकार है — उदाहरण के लिए, पेज की रिसोर्स डिक्शनरी में Font और Resources कुंजियां। PdfNull PDF null ऑब्जेक्ट को दर्शाता है।
import aspose_pdf
from aspose_pdf.engine.data.number import PdfNumber
from aspose_pdf.engine.data.types import PdfName
number = PdfNumber(3.14)
raw_value = number.value # already the native int/float you passed in
resources_key = PdfName("Resources")
font_key = PdfName("Font")रंग मान
Color एक RGBA रंग का प्रतिनिधित्व करता है जिसमें r, g, b, और a फ़्लोट प्रॉपर्टी हैं। दो-आर्ग्यूमेंट-प्लस-अल्फा कंस्ट्रक्टर के अलावा, यह नामित रंग फ़ैक्टरीज़ का पूर्ण सेट प्रदान करता है — दोनों लोअरकेस (aqua(), blue(), azure(), red(), green(), yellow(), black(), white(), gray()) और PascalCase उपनाम (Aqua(), Blue(), Azure(), Red(), Green(), Yellow(), Black(), White(), Gray())।
import aspose_pdf
from aspose_pdf.engine.data.types import Color
custom = Color(r=0.2, g=0.4, b=0.8, a=1.0)
# Named factories return ready-made Color instances
highlight = Color.yellow()
border = Color.Black()पाठ एन्कोडिंग और स्ट्रीम फ़िल्टर
EncodingType (WIN_ANSI, MAC_ROMAN, MAC_EXPERT, PDF_DOC, UNICODE) एक पाठ एन्कोडिंग को पहचानता है, और Encoding मिलते-जुलते एन्कोडिंग स्थिरांक (UTF8, UTF16, LATIN1, WIN_ANSI) को एक encode(text, encoding_type) मेथड के साथ प्रस्तुत करता है जो एन्कोडेड bytes लौटाता है। FilterType (NONE, FLATE_DECODE, LZW_DECODE, DCT_DECODE, JPX_DECODE, CCITT_FAX_DECODE, JBIG2_DECODE) संपीड़ित PDF सामग्री पर लागू स्ट्रीम फ़िल्टर को पहचानता है।
import aspose_pdf
from aspose_pdf.engine.data import Encoding, EncodingType, FilterType
encoded = Encoding.encode("Hello, world", EncodingType.WIN_ANSI)
# FilterType values identify how a content or image stream is compressed
current_filter = FilterType.FLATE_DECODEXMP मेटाडाटा
XmpPacket दस्तावेज़ के XMP मेटाडाटा पैकेट के लिए इन-मेमोरी मॉडल है — यह वह प्रकार है जो Document.xmp_metadata द्वारा लौटाया जाता है। यह fields का क्रमबद्ध संग्रह रखता है (प्रत्येक XmpField, XmpArray, या XmpProperty है) और एक XmpNamespaceProvider के माध्यम से नेमस्पेस उपसर्गों को हल करता है। टाइप्ड गेटर और सेटर (get_value-शैली के एक्सेसर जैसे get_bool, get_int, get_real, get_date, get_localized_text, get_array, और उनके set_* समकक्ष) नेमस्पेस उपसर्ग या URI और प्रॉपर्टी नाम द्वारा व्यक्तिगत प्रॉपर्टीज़ को पढ़ते और लिखते हैं।
import aspose_pdf
doc = aspose_pdf.Document()
doc.load_from("input.pdf")
xmp = doc.xmp_metadata # XmpPacket
title = xmp.get_localized_text("dc", "title", lang="x-default")
xmp.set_value("dc", "creator", "Jane Doe")
serialized = xmp.serialize()XmpStruct एक संरचित (rdf:parseType="Resource") मान को अपने स्वयं के get(name) लुकअप के साथ मॉडल करता है, XmpArray एक क्रमबद्ध एरे को add(item) और remove(item) के साथ मॉडल करता है, और XmpProperty एक प्रॉपर्टी है जो अपने स्वयं के add_qualifier/remove_qualifier क्वालिफायर ले जाती है। ये सभी चार व्यक्तिगत मानों के लिए समान XmpField बिल्डिंग ब्लॉक साझा करते हैं।
टिप्स और सर्वोत्तम प्रथाएँ
Document.xmp_metadataपढ़ें ताकि दस्तावेज़ काXmpPacketप्राप्त किया जा सके, न कि शून्य से बनाना — यह लोड की गई फ़ाइल से पहले से ही भर दिया गया है।- सिधा
PdfNumber.valueपढ़ें — इसमें पहले से ही वह मूल Pythonintयाfloatहोता है जो आपने कन्स्ट्रक्टर को पास किया था; यहाँ कोईto_double()याto_int()रूपांतरण विधि नहीं है। - सामान्य रंगों के लिए हाथ से बनाए गए
r/g/b/aट्यूपल्स की बजाय नामितColorफ़ैक्ट्रीज़ (Color.red(),Color.Black(), आदि) को प्राथमिकता दें — कॉल साइट्स पर यह अधिक स्पष्ट पढ़ा जाता है। EncodingTypeको जो आपEncoding.encode()में पास करते हैं, उसे उस एन्कोडिंग से मिलाएँ जो लक्ष्य (फ़ॉन्ट, स्ट्रीम, या व्यूअर) वास्तव में अपेक्षित करता है; PDF टेक्स्ट एन्कोडिंग की असंगतियाँ गड़बड़ आउटपुट का सामान्य स्रोत हैं।PdfObjectRegistryऔरPdfObjectIDको निम्न-स्तर, इंजन-उन्मुख प्रकार मानें — अधिकांश एप्लिकेशन कोड दस्तावेज़ सामग्री को सीधे ऑब्जेक्ट पंजीकृत करने की बजायDocumentऔरPageके माध्यम से पढ़ता है।
सामान्य समस्याएँ
| समस्या | कारण | समाधान |
|---|---|---|
PdfNumber तुलना अप्रत्याशित रूप से व्यवहार करती है | रैपर की तुलना उसके संख्यात्मक मान के बजाय की जा रही है | .value को तुलना या अंकगणित करने से पहले पढ़ें |
XMP प्रॉपर्टी लुकअप None लौटाता है | गलत prefix या uri को get_value-स्टाइल एक्सेसर्स को पास किया गया | पढ़ने से पहले XmpNamespaceProvider.get_uri() / get_prefix() के माध्यम से नेमस्पेस प्रीफ़िक्स की पुष्टि करें |
Encoding.encode() के बाद एन्कोडेड टेक्स्ट गड़बड़ दिखता है | EncodingType लक्ष्य की अपेक्षा के अनुरूप नहीं है | लक्ष्य फ़ॉन्ट या व्यूअर से मेल खाने वाले EncodingType मान (WIN_ANSI, MAC_ROMAN, MAC_EXPERT, PDF_DOC, UNICODE) का उपयोग करें |
कस्टम PdfObjectRegistry ऑब्जेक्ट्स बाद में हल नहीं होते | get() को एक PdfObjectID के साथ कॉल किया गया जो उस रजिस्ट्री इंस्टेंस पर कभी register()-ed नहीं हुआ | इसे हल करने से पहले हर ऑब्जेक्ट को समान PdfObjectRegistry इंस्टेंस पर रजिस्टर्ड करें |
FAQ
क्या मुझे स्वयं PdfObjectID या PdfObjectRegistry बनाना आवश्यक है?
बहुत कम। वे इंजन की सीरियलाइज़ेशन प्रक्रिया को समर्थन देते हैं; अधिकांश एप्लिकेशन कोड उन्हें सीधे इंस्टैंशिएट नहीं करता जब तक कि वह निम्न-स्तर ऑब्जेक्ट मॉडल के साथ काम नहीं कर रहा हो।
इन XmpField, XmpArray, XmpStruct, और XmpProperty के बीच अंतर क्या है?
XmpField एक एकल स्केलर मान है। XmpArray मानों की क्रमबद्ध सूची है, XmpStruct फ़ील्ड्स का एक संरचित (rdf:parseType="Resource") समूह है, और XmpProperty वह मान है जो अपने स्वयं के क्वालिफायर भी धारण करता है।
मैं दस्तावेज़ का XMP मेटाडाटा कैसे प्राप्त करूँ?
लोड किए गए Document पर xmp_metadata प्रॉपर्टी पढ़ें — यह एक XmpPacket लौटाता है जिसे आप स्थान पर क्वेरी और अपडेट कर सकते हैं।
क्या लोअरकेस और PascalCase Color factories अलग रंग हैं?
नहीं — Color.red() और Color.Red() उपनाम हैं जो एक ही रंग लौटाते हैं; दोनों वर्तनी सुविधा के लिए प्रदान की गई हैं।
API Reference सारांश
| क्लास / मेथड | विवरण |
|---|---|
PdfObjectID | ऑब्जेक्ट और जनरेशन नंबर द्वारा एक अप्रत्यक्ष PDF ऑब्जेक्ट की पहचान करता है |
PdfObjectRegistry.register | सीरियलाइज़ किए जा रहे ऑब्जेक्ट को एक PdfObjectID असाइन करता है |
PdfObjectRegistry.get | पहले पंजीकृत PdfObjectID से एक ऑब्जेक्ट को हल करता है |
PdfTrailerable.get_dictionary | PDF ट्रेलर में लिखी गई डिक्शनरी उत्पन्न करता है |
PdfNumber.value | रैप किया गया संख्यात्मक मान, पहले से ही एक मूल Python int या float |
PdfName | PDF नाम मान को रैप करता है, जिसका उपयोग लो-लेवल ऑब्जेक्ट मॉडल में शब्दकोश कुंजियों के रूप में किया जाता है |
PdfNull | PDF null ऑब्जेक्ट का प्रतिनिधित्व करता है |
Color | RGBA रंग मान, नामित फ़ैक्टरीज़ (red, blue, Black, आदि) के साथ |
Encoding.encode | टेक्स्ट को bytes में एन्कोड करता है, एक EncodingType का उपयोग करके |
EncodingType | टेक्स्ट एन्कोडिंग पहचानकर्ता: WIN_ANSI, MAC_ROMAN, MAC_EXPERT, PDF_DOC, UNICODE |
FilterType | सामग्री और छवि स्ट्रीम द्वारा उपयोग किया जाने वाला स्ट्रीम संपीड़न फ़िल्टर पहचानकर्ता |
XmpPacket | इन-मेमोरी XMP मेटाडेटा पैकेट, जो Document.xmp_metadata द्वारा लौटाया जाता है |
XmpField | एक एकल XMP प्रॉपर्टी मान |
XmpArray | एक क्रमबद्ध XMP एरे मान |
XmpStruct | एक संरचित (rdf:parseType="Resource") XMP मान |
XmpProperty | एक XMP प्रॉपर्टी जो अपने स्वयं के क्वालिफायर्स लेती है |
XmpNamespaceProvider | XMP नेमस्पेस प्रीफ़िक्स को URI में और URI से हल करता है |