Primitives
Primitives
Deze gids behandelt de kleine, in de praktijk onveranderlijke waardetypen die geometrie- en kleurgegevens door de rest van de API dragen: 2D- en 3D-punten, rechthoeken, transformatie-matrices en kleurwaarden. Je importeert deze meestal niet direct op naam in eenvoudige workflows — ze verschijnen als eigenschapstypen op hoger-niveau-objecten zoals annotaties, afbeeldingsplaatsingen en 3D-weergaven — maar het kennen van hun vorm maakt de eigenschappen van die objecten gemakkelijk leesbaar en te construeren.
Punten: Point en Point3D
Point is een eenvoudige 2D-coördinaat met x en y float-eigenschappen. Point3D is de 3D-tegenhanger, geconstrueerd als Point3D(x, y, z) en met x, y en z float-eigenschappen. Point is het type dat wordt gebruikt voor GradientAxialShading.start / end; Matrix3D-gebaseerde transformaties en 3D-weergaven werken in dezelfde coördinatenruimte die Point3D beschrijft.
Rectangles
Rectangle(x, y, width, height) beschrijft een positie en grootte, en exposeert bovendien berekende left, bottom en right float-eigenschappen naast x, y, width en height. Rectangle is het type achter PDF3DAnnotation.rect, zodat de paginabounds van een 3D-annotatie worden gelezen en ingesteld via dezelfde vorm als elke andere rechthoek in de API.
Transformatiematrices: Matrix en Matrix3D
Matrix bevat een 2D affiene transformatie als zes float-componenten — a, b, c, d, e, f — en biedt twee methoden: translate(x, y) om een translatie in-place toe te passen, en multiply(other) om deze te combineren met een andere Matrix, waarbij de resulterende Matrix wordt geretourneerd.
Matrix3D is de 3D-tegenhanger: een 3×3 rotatie/schaal-blok (m11 tot en met m33) plus een dx, dy, dz translatie-component, geconstrueerd zonder argumenten (Matrix3D()) en ingevuld door zijn eigenschappen in te stellen. PDF3DView.ctm heeft het type Matrix3D | None — de huidige transformatie-matrix voor een opgeslagen 3D-view.
Tips en best practices
- Construeer
Rectangle,PointenPoint3Dmet positionele argumenten in de gedocumenteerde volgorde (x, y[, z]/x, y, width, height) — deze types accepteren gewone floats, geen alleen-keyword-argumenten. - Gebruik
Matrix.multiply()om transformaties te combineren in plaats van handmatig de zesa–fcomponenten samen te voegen. - Wanneer het type van een eigenschap optioneel is (bijvoorbeeld
PDF3DAnnotation.background_color: Color | NoneofPDF3DView.ctm: Matrix3D | None), controleer dan opNonevoordat je geneste eigenschappen ervan leest. - Gebruik
GradientAxialShadingalleen wanneer je een tweekleurige lineaire gradient nodig hebt als patroon-kleurenspace; voor een vlak, enkele kleur gebruik jeColordirect. - De
left,bottomenrighteigenschappen vanRectanglezijn afgeleid vanx,yenwidth/height— beschouw ze als een handige weergave van hetzelfde rechthoek in plaats van een onafhankelijke toestand.
Algemene Problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| Rechthoek- of puntcoördinaten lijken verwisseld of onjuist geschaald | Positionele argumenten in de verkeerde volgorde doorgegeven aan Rectangle(x, y, width, height) of Point3D(x, y, z) | Controleer de argumentvolgorde nogmaals tegen de handtekening van de constructor — deze typen hebben geen keyword-only afdwinging |
AttributeError bij het lezen van een kleur- of matrix-eigenschap | Eigenschap benaderd op een None-waarde van een optioneel veld (bijv. background_color, ctm) | Controleer of de waarde niet None is voordat je geneste eigenschappen benadert |
| De gradient wordt weergegeven als één effen kleur | GradientAxialShading.start en end Point waarden zijn identiek of zeer dicht bij elkaar | Zorg ervoor dat start en end twee visueel verschillende punten langs de beoogde gradientas aanduiden |
FAQ
Moet ik Point, Rectangle of Matrix direct importeren bij normaal gebruik?
Meestal niet — je zult ze het vaakst tegenkomen als het type van een eigenschap (zoals PDF3DAnnotation.rect of PDF3DView.ctm) in plaats van ze vanaf nul te construeren, hoewel niets het construeren ervan direct verhindert wanneer je een zelfstandige waarde nodig hebt.
Wat is het verschil tussen Color en ColorPrimitive?
Color bevat RGB-achtige kanaaldata plus een optionele pattern_color_space voor gradientvullingen. ColorPrimitive is een veel kleiner type dat alleen een transparency-waarde blootlegt.
Hoe combineer ik twee transformaties met Matrix?
Roep matrix_a.multiply(matrix_b) aan, die de samengestelde Matrix retourneert. Gebruik translate(x, y) voor een eenvoudige translatie zonder een volledige matrixvermenigvuldiging op te bouwen.
Wordt Matrix3D ergens buiten 3D-annotaties gebruikt?
Binnen deze cluster verschijnt Matrix3D als het type van PDF3DView.ctm — de huidige transformatie-matrix die gekoppeld is aan een opgeslagen 3D-weergave.
API Reference Samenvatting
| Klasse/Methode | Beschrijving |
|---|---|
Point | 2D-coördinaat (x, y float-eigenschappen) |
Point3D | 3D-coördinaat (x, y, z float-eigenschappen) |
Rectangle | Positie en grootte (x, y, width, height, plus berekende left, bottom, right) |
Matrix | 2D affine transformatie (a–f componenten); translate / multiply methoden |
Matrix3D | 3D-transformatiematrix (m11–m33 rotatie/schaalblok, dx/dy/dz translatie) |
Color | Kleurwaarde met optionele pattern_color_space gradientvulling |
ColorPrimitive | Minimale kleurprimitive die transparency blootlegt |
GradientAxialShading | Axiale (lineaire) gradient tussen twee Color waarden langs twee Point eindpunten |