Primitives
Primitives
Bu kılavuz, API içinde geometri ve renk verilerini taşıyan, pratikte değişmez küçük değer tiplerini kapsar: 2D ve 3D noktalar, dikdörtgenler, dönüşüm matrisleri ve renk değerleri. Basit iş akışlarında genellikle bu tipleri adlarıyla doğrudan içe aktarmazsınız — bunlar, açıklamalar, görüntü yerleşimleri ve 3D görünümler gibi üst-seviye nesnelerde özellik tipi olarak ortaya çıkar — ancak biçimlerini bilmek, bu nesnelerin özelliklerini okumayı ve oluşturmayı kolaylaştırır.
Noktalar: Point ve Point3D
Point, x ve y float özelliklerine sahip basit bir 2D koordinattır. Point3D, Point3D(x, y, z) olarak oluşturulan ve x, y ve z float özelliklerini sunan 3D karşılığıdır. Point, GradientAxialShading.start / end için kullanılan tiptir; Matrix3D tabanlı dönüşümler ve 3D görünümler, Point3D tarafından tanımlanan aynı koordinat uzayında çalışır.
Rectangles
Rectangle(x, y, width, height), bir konum ve boyutu tanımlar ve ayrıca hesaplanmış left, bottom ve right float özelliklerini, x, y, width ve height ile birlikte sunar. Rectangle, PDF3DAnnotation.rect arkasındaki tiptir; böylece 3D açıklamanın sayfa üzerindeki sınırları, API içindeki diğer tüm dikdörtgenler gibi aynı şekil üzerinden okunur ve ayarlanır.
Dönüşüm Matrisleri: Matrix ve Matrix3D
Matrix altı float bileşeni olarak bir 2D afin dönüşümü tutar — a, b, c, d, e, f — ve iki yöntem sağlar: translate(x, y) yerinde bir çevirme uygulamak için, ve multiply(other) başka bir Matrix ile birleştirmek için, sonuçta oluşan Matrix döndürür.
Matrix3D 3D karşılığıdır: (m11 ile m33 arasındaki) bir 3x3 dönüş/ölçek bloğu ve bir dx, dy, dz çevirme bileşeni, hiç argüman olmadan (Matrix3D()) oluşturulur ve özellikleri ayarlanarak doldurulur. PDF3DView.ctm Matrix3D | None tipiyle tanımlanmıştır — kaydedilmiş bir 3D görünüm için mevcut dönüşüm matrisi.
İpuçları ve En İyi Uygulamalar
Rectangle,PointvePoint3Döğelerini belgelenen sırada konumsal argümanlarla (x, y[, z]/x, y, width, height) oluşturun — bu tipler sadece düz float alır, yalnızca anahtar kelime argümanları kabul etmez.- Dönüşümleri birleştirmek için
Matrix.multiply()kullanın, altıa–fbileşenini elle birleştirmek yerine. - Bir özelliğin tipi isteğe bağlı olduğunda (örneğin
PDF3DAnnotation.background_color: Color | NoneveyaPDF3DView.ctm: Matrix3D | None), onun iç içe geçmiş özelliklerini okumadan önceNoneolup olmadığını kontrol edin. - Desen renk uzayı olarak iki renkli lineer bir degrade gerektiğinde yalnızca
GradientAxialShadingkullanın; düz, tek renk için doğrudanColorkullanın. Rectangle‘ınleft,bottomverightözelliklerix,yvewidth/heightöğelerinden türetilir — bunları bağımsız bir durum yerine aynı dikdörtgenin kullanışlı bir görünümü olarak değerlendirin.
Yaygın Sorunlar
| Sorun | Neden | Düzeltme |
|---|---|---|
| Dikdörtgen ya da nokta koordinatları takas edilmiş ya da yanlış ölçeklendirilmiş görünüyor | Konumsal argümanlar Rectangle(x, y, width, height) ya da Point3D(x, y, z) için yanlış sırayla gönderildi | Argüman sırasını kurucu imzasına karşı iki kez kontrol edin — bu tiplerde anahtar kelime-sadece zorlaması yoktur |
AttributeError bir renk ya da matris özelliği okunurken | İsteğe bağlı bir alandan gelen None değeri üzerinde erişilen özellik (ör. background_color, ctm) | Değerin None olmadığından emin olun, ardından iç içe özelliklere erişin |
| Gradyan tek bir düz renk olarak görüntüleniyor | GradientAxialShading.start ve end Point değerleri aynı veya çok yakın | start ve end‘in, amaçlanan gradyan ekseni boyunca görsel olarak farklı iki noktayı işaret ettiğinden emin olun |
FAQ
Normal kullanımda Point, Rectangle veya Matrix’i doğrudan içe aktarmam gerekiyor mu?
Genellikle hayır — bunlarla en sık bir özelliğin tipi (örneğin PDF3DAnnotation.rect veya PDF3DView.ctm) olarak karşılaşırsınız, sıfırdan oluşturmak yerine; ancak bağımsız bir değere ihtiyaç duyduğunuzda doğrudan oluşturmanızı engelleyecek bir şey yok.
Color ile ColorPrimitive arasındaki fark nedir?
Color, RGB tarzı kanal verilerini ve degrade doldurmalar için isteğe bağlı bir pattern_color_space taşır. ColorPrimitive, yalnızca bir transparency değeri ortaya çıkaran çok daha küçük bir tiptir.
Matrix ile iki dönüşümü nasıl birleştiririm?
matrix_a.multiply(matrix_b)‘ı çağırın, bu birleşik Matrix‘i döndürür. Tam bir matris çarpımı oluşturmadan basit bir çeviri için translate(x, y)‘ı kullanın.
Matrix3D, 3D açıklamaların dışında herhangi bir yerde kullanılıyor mu?
Bu küme içinde, Matrix3D, PDF3DView.ctm tipinde görünür — kaydedilmiş bir 3D görünümle ilişkili mevcut dönüşüm matrisi.
API Reference Özeti
| Sınıf/Yöntem | Açıklama |
|---|---|
Point | 2D koordinat (x, y float özellikleri) |
Point3D | 3B koordinat (x, y, z float özellikleri) |
Rectangle | Pozisyon ve boyut (x, y, width, height, ayrıca hesaplanan left, bottom, right) |
Matrix | 2B affine dönüşüm (a–f bileşen); translate / multiply yöntemleri |
Matrix3D | 3B dönüşüm matrisi (m11–m33 döndürme/ölçek bloğu, dx/dy/dz öteleme) |
Color | İsteğe bağlı pattern_color_space degrade doldurması ile renk değeri |
ColorPrimitive | Minimal renk ilkel nesnesi transparency gösterir |
GradientAxialShading | İki Color değeri arasında iki Point uç nokta boyunca eksenel (lineer) degrade |