Primitives
Primitives
Tato příručka se zabývá malými, v praxi neměnnými typy hodnot, které přenášejí geometrická a barevná data skrze zbytek API: 2D a 3D body, obdélníky, transformační matice a barevné hodnoty. V jednoduchých pracovních postupech je obvykle nebudete importovat přímo podle názvu—objevují se jako typy vlastností na vyšších objektech, jako jsou anotace, umístění obrázků a 3D pohledy—ale znalost jejich struktury usnadní čtení a vytváření vlastností těchto objektů.
Body: Point a Point3D
Point je jednoduchá 2D souřadnice s vlastnostmi typu float x a y. Point3D je její 3D protějšek, vytvořený jako Point3D(x, y, z) a vystavující vlastnosti typu float x, y a z. Point je typ používaný pro GradientAxialShading.start / end; transformace založené na Matrix3D a 3D pohledy operují ve stejném souřadnicovém prostoru, který popisuje Point3D.
Rectangles
Rectangle(x, y, width, height) popisuje pozici a velikost a navíc poskytuje vypočtené float vlastnosti left, bottom a right spolu s x, y, width a height. Rectangle je typ stojící za PDF3DAnnotation.rect, takže ohraničení 3D anotace na stránce se čte a nastavuje pomocí stejného tvaru jako jakýkoli jiný obdélník v API.
Transformace matice: Matrix a Matrix3D
Matrix obsahuje 2D afinní transformaci jako šest komponent typu float — a, b, c, d, e, f — a poskytuje dvě metody: translate(x, y) pro aplikaci translace přímo, a multiply(other) pro složení s jiným Matrix, vracející výsledný Matrix.
Matrix3D je 3D protějšek: 3×3 blok rotace/škálování (m11 až m33) plus překladová komponenta dx, dy, dz, vytvořený bez argumentů (Matrix3D()) a naplněný nastavením jeho vlastností. PDF3DView.ctm má typ Matrix3D | None — aktuální transformační matice pro uložený 3D pohled.
Tipy a osvědčené postupy
- Vytvořte
Rectangle,PointaPoint3Dpomocí pozičních argumentů v dokumentovaném pořadí (x, y[, z]/x, y, width, height) — tyto typy přijímají obyčejné floaty, nikoli pouze argumenty pojmenované klíčovým slovem. - Použijte
Matrix.multiply()ke skládání transformací místo ručního kombinování šesti komponenta–f. - Když je typ vlastnosti volitelný (například
PDF3DAnnotation.background_color: Color | NoneneboPDF3DView.ctm: Matrix3D | None), zkontrolujteNonepřed čtením vnořených vlastností. - Použijte
GradientAxialShadingjen tehdy, když potřebujete dvoubarevný lineární gradient jako prostor vzorových barev; pro plochou, jednobarevnou oblast použijteColorpřímo. - Vlastnosti
left,bottomarightobjektuRectanglejsou odvozeny zx,yawidth/height— považujte je za pohodlný pohled na stejný obdélník, nikoli za nezávislý stav.
Běžné problémy
| Problém | Příčina | Oprava |
|---|---|---|
| Souřadnice obdélníku nebo bodu se jeví jako prohozené nebo nesprávně škálované | Poziční argumenty předány v nesprávném pořadí do Rectangle(x, y, width, height) nebo Point3D(x, y, z) | Zkontrolujte pořadí argumentů podle signatury konstruktoru – u těchto typů není vynucováno používání pouze klíčových argumentů |
AttributeError při čtení vlastnosti barvy nebo matice | Vlastnost přistupována na hodnotě None z volitelného pole (např. background_color, ctm) | Zkontrolujte, že hodnota není None, než přistoupíte k vnořeným vlastnostem |
| Gradient se vykresluje jako jedna plochá barva | GradientAxialShading.start a end Point hodnoty jsou identické nebo si velmi blíží | Ujistěte se, že start a end označují dva vizuálně odlišné body podél zamýšlené osy gradientu |
FAQ
Potřebuji v běžném použití importovat Point, Rectangle nebo Matrix přímo?
Obvykle ne — nejčastěji na ně narazíte jako na typ vlastnosti (například PDF3DAnnotation.rect nebo PDF3DView.ctm) spíše než že byste je vytvářeli od nuly, ačkoliv nic nebrání jejich přímému vytvoření, pokud potřebujete samostatnou hodnotu.
Jaký je rozdíl mezi Color a ColorPrimitive?
Color obsahuje kanálová data ve stylu RGB a volitelně pattern_color_space pro gradientní výplně. ColorPrimitive je mnohem menší typ, který vystavuje pouze hodnotu transparency.
Jak spojím dva transformy pomocí Matrix?
Zavolejte matrix_a.multiply(matrix_b), který vrací složený Matrix. Použijte translate(x, y) pro jednoduchý posun bez nutnosti vytvářet úplnou maticovou násobení.
Používá se Matrix3D někde mimo 3D anotace?
V tomto klastru se Matrix3D objevuje jako typ PDF3DView.ctm — aktuální transformační matice spojená s uloženým 3D pohledem.
API Reference Shrnutí
| Třída/metoda | Popis: |
|---|---|
Point | 2D souřadnice (x, y float vlastnosti) |
Point3D | 3D souřadnice (x, y, z float vlastnosti) |
Rectangle | Pozice a velikost (x, y, width, height, plus vypočítané left, bottom, right) |
Matrix | 2D afinní transformace (a–f komponenty); translate / multiply metody |
Matrix3D | 3D transformační matice (m11–m33 blok rotace/škálování, dx/dy/dz translace) |
Color | Hodnota barvy s volitelným pattern_color_space gradientním výplní |
ColorPrimitive | Minimální barevná primitiva vystavující transparency |
GradientAxialShading | Axiální (lineární) gradient mezi dvěma hodnotami Color podél dvou koncových bodů Point |