Primitives
Primitives
यह गाइड उन छोटे, व्यावहारिक रूप से अपरिवर्तनीय मान प्रकारों को कवर करता है जो ज्यामिति और रंग डेटा को बाकी API में ले जाते हैं: 2D और 3D बिंदु, आयतें, परिवर्तन मैट्रिसेज, और रंग मान। आप आमतौर पर सरल कार्यप्रवाहों में इन्हें सीधे नाम से आयात नहीं करेंगे — ये एनोटेशन, छवि प्लेसमेंट, और 3D दृश्य जैसे उच्च-स्तरीय वस्तुओं पर प्रॉपर्टी प्रकारों के रूप में प्रकट होते हैं — लेकिन इनके आकार को जानने से उन वस्तुओं की प्रॉपर्टी को पढ़ना और बनाना आसान हो जाता है।
बिंदु: Point और Point3D
Point एक साधारण 2D निर्देशांक है जिसमें x और y फ़्लोट प्रॉपर्टी होती हैं। Point3D इसका 3D समकक्ष है, जिसे Point3D(x, y, z) के रूप में निर्मित किया गया है और यह x, y, और z फ़्लोट प्रॉपर्टी प्रदान करता है। Point वह प्रकार है जिसका उपयोग GradientAxialShading.start / end के लिए किया जाता है; Matrix3D-आधारित ट्रांसफ़ॉर्म और 3D दृश्य उसी निर्देशांक स्थान में कार्य करते हैं जिसका वर्णन Point3D करता है।
Rectangles
Rectangle(x, y, width, height) स्थिति और आकार का वर्णन करता है, और अतिरिक्त रूप से गणना किए गए left, bottom, और right फ़्लोट प्रॉपर्टी को x, y, width, और height के साथ उजागर करता है। Rectangle वह प्रकार है जो PDF3DAnnotation.rect के पीछे है, इसलिए 3D एनोटेशन की पृष्ठ-पर सीमा को API में किसी भी अन्य आयत की तरह उसी रूप के माध्यम से पढ़ा और सेट किया जाता है।
परिवर्तन मैट्रिसेज: Matrix और Matrix3D
Matrix छह फ़्लोट घटकों के रूप में 2D अफ़ाइन ट्रांसफ़ॉर्म रखता है — a, b, c, d, e, f — और दो मेथड्स प्रदान करता है: translate(x, y) जो स्थान पर ट्रांसलेशन लागू करता है, और multiply(other) जो इसे दूसरे Matrix के साथ संयोजित करता है, परिणामस्वरूप Matrix लौटाता है।
Matrix3D 3D समकक्ष है: एक 3x3 रोटेशन/स्केल ब्लॉक (m11 से m33 तक) प्लस एक dx, dy, dz ट्रांसलेशन घटक, जिसे बिना आर्ग्यूमेंट्स के बनाया गया है (Matrix3D()) और उसकी प्रॉपर्टीज़ सेट करके भरते हैं। PDF3DView.ctm का टाइप Matrix3D | None है — सहेजे गये 3D दृश्य के लिए वर्तमान ट्रांसफ़ॉर्मेशन मैट्रिक्स।
टिप्स और सर्वोत्तम प्रथाएँ
- दस्तावेज़ में निर्दिष्ट क्रम (
x, y[, z]/x, y, width, height) में स्थितीय आर्ग्यूमेंट्स के साथRectangle,Point, औरPoint3Dबनाएं — ये प्रकार साधारण फ़्लोट्स लेते हैं, कीवर्ड-ओनली आर्ग्यूमेंट्स नहीं। - हाथ से छह
a–fघटकों को मिलाने के बजाय ट्रांसफ़ॉर्म्स को संयोजित करने के लिएMatrix.multiply()का उपयोग करें। - जब किसी प्रॉपर्टी का टाइप वैकल्पिक हो (जैसे
PDF3DAnnotation.background_color: Color | NoneयाPDF3DView.ctm: Matrix3D | None), उस पर नेस्टेड प्रॉपर्टीज़ पढ़ने से पहलेNoneकी जाँच करें। - केवल तब
GradientAxialShadingका उपयोग करें जब आपको पैटर्न कलर स्पेस के रूप में दो-रंगीय रैखिक ग्रेडिएंट चाहिए; एक सपाट, एकल रंग के लिए सीधेColorका उपयोग करें। Rectangleकीleft,bottom, औरrightप्रॉपर्टीज़x,y, औरwidth/heightसे व्युत्पन्न हैं — इन्हें स्वतंत्र स्थिति के बजाय उसी आयत का एक सुविधाजनक दृश्य मानें।
सामान्य समस्याएँ
| समस्या | कारण | समाधान |
|---|---|---|
| आयत या बिंदु के निर्देशांक उलटे हुए या गलत रूप से स्केल किए हुए दिखाई देते हैं | स्थिति तर्क Rectangle(x, y, width, height) या Point3D(x, y, z) को गलत क्रम में पास किए गए | कंस्ट्रक्टर सिग्नेचर के मुकाबले तर्क क्रम को दोबारा जांचें — इन प्रकारों में कोई कीवर्ड-ओनली प्रवर्तन नहीं है |
AttributeError जब कोई रंग या मैट्रिक्स प्रॉपर्टी पढ़ी जा रही हो | वैकल्पिक फ़ील्ड से None मान पर प्रॉपर्टी तक पहुँच (उदा. background_color, ctm) | नेस्टेड प्रॉपर्टीज़ तक पहुँचने से पहले सुनिश्चित करें कि मान None न हो |
| ग्रेडिएंट एकसमान सपाट रंग के रूप में रेंडर होता है | GradientAxialShading.start और end के Point मान समान हैं या बहुत करीब हैं | सुनिश्चित करें कि start और end इच्छित ग्रेडिएंट अक्ष के साथ दो स्पष्ट रूप से अलग बिंदुओं को दर्शाते हैं |
FAQ
क्या मुझे सामान्य उपयोग में Point, Rectangle, या Matrix को सीधे इम्पोर्ट करने की आवश्यकता है?
आमतौर पर नहीं — आप इन्हें सबसे अधिक एक प्रॉपर्टी के प्रकार के रूप में देखेंगे (जैसे PDF3DAnnotation.rect या PDF3DView.ctm) न कि शून्य से बनाते हुए, हालांकि जब आपको एक स्वतंत्र मान की जरूरत हो तो सीधे इन्हें बनाना रोकने वाला कुछ भी नहीं है।
Color और ColorPrimitive के बीच क्या अंतर है?
Color में RGB-शैली के चैनल डेटा होते हैं और ग्रेडिएंट फिल्स के लिए एक वैकल्पिक pattern_color_space भी होता है। ColorPrimitive एक बहुत छोटा प्रकार है जो केवल एक transparency मान दिखाता है।
मैं दो ट्रांसफ़ॉर्म्स को Matrix के साथ कैसे जोड़ूँ?
matrix_a.multiply(matrix_b) को कॉल करें, जो संयुक्त Matrix लौटाता है। पूर्ण मैट्रिक्स गुणन बनाए बिना एक सरल ट्रांसलेशन के लिए translate(x, y) का उपयोग करें।
क्या Matrix3D का उपयोग 3D एनोटेशन्स के बाहर कहीं किया जाता है?
इस क्लस्टर के भीतर, Matrix3D PDF3DView.ctm के प्रकार के रूप में दिखाई देता है — एक सहेजे गए 3D दृश्य के साथ जुड़ा वर्तमान ट्रांसफ़ॉर्मेशन मैट्रिक्स।
API Reference सारांश
| क्लास/मेथड | विवरण |
|---|---|
Point | 2D समन्वय (x, y float गुण) |
Point3D | 3D समन्वय (x, y, z float गुण) |
Rectangle | स्थिति और आकार (x, y, width, height, साथ में गणना किए गए left, bottom, right) |
Matrix | 2D affine transform (a–f घटक); translate / multiply विधियाँ |
Matrix3D | 3D ट्रांसफ़ॉर्म मैट्रिक्स (m11–m33 रोटेशन/स्केल ब्लॉक, dx/dy/dz अनुवाद) |
Color | रंग मान वैकल्पिक pattern_color_space ग्रेडिएंट फ़िल के साथ |
ColorPrimitive | न्यूनतम रंग प्रिमिटिव transparency को उजागर करता हुआ |
GradientAxialShading | दो Color मानों के बीच अक्षीय (रैखिक) ग्रेडिएंट, दो Point अंतबिंदुओं के साथ |