डेटा प्रिमिटिव्स और XMP मेटाडेटा

डेटा प्रिमिटिव्स और 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_DECODE

XMP मेटाडाटा

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 पढ़ें — इसमें पहले से ही वह मूल Python int या 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_dictionaryPDF ट्रेलर में लिखी गई डिक्शनरी उत्पन्न करता है
PdfNumber.valueरैप किया गया संख्यात्मक मान, पहले से ही एक मूल Python int या float
PdfNamePDF नाम मान को रैप करता है, जिसका उपयोग लो-लेवल ऑब्जेक्ट मॉडल में शब्दकोश कुंजियों के रूप में किया जाता है
PdfNullPDF null ऑब्जेक्ट का प्रतिनिधित्व करता है
ColorRGBA रंग मान, नामित फ़ैक्टरीज़ (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 प्रॉपर्टी जो अपने स्वयं के क्वालिफायर्स लेती है
XmpNamespaceProviderXMP नेमस्पेस प्रीफ़िक्स को URI में और URI से हल करता है

यह भी देखें

 हिन्दी