İçeriğe geç
getnextpdf.com

Pro sürüm

Chart — Derinlemesine başvuru

Bu sayfa, NextPDF Pro Chart modülünün sözleşme düzeyindeki başvurusudur. Yüzey, NextPDF\Pro\Chart içindeki beş genel sınıftır: BarChart, LineChart ve PieChart oluşturucuları, ChartBox yerleştirme dikdörtgeni ve ChartColor değer nesnesi. Her oluşturucu bir çizim ilkelidir. Statik bir fabrika onu yaratır, akıcı with*() çağrıları onu yapılandırır ve render(ChartBox $box): string sağlanan dikdörtgen için PDF içerik akışı operatörleri döndürür. Çıktı yalnızca vektöreldir ve belirleyicidir: aynı girdi ve yapılandırma aynı baytları üretir. Yozlaşmış girdiler istisna fırlatmak yerine boş bir dize döndürür; böylece bir chart çevreleyen sayfayı asla bozmaz. Göreve yönelik görünüm yetenek sayfasında bulunur.

Bu yetenek NextPDF Pro (nextpdf/pro) içinde sunulur ve Pro katmanı lisans zarfıyla etkinleşir. Bu yetkilendirme olmadan bir dağıtım, yeteneğin sınıflarını yüklemez. Sürümleri karşılaştırın ve lisans edinin.

Chart oluşturucuları, chart.* yetenek ailesi altında yetenek lisanslıdır. Yetenek lisanslı değilken, chart oluşturucuları kullanılamaz.

Terminal window
composer require nextpdf/pro:^3
SembolParametrelerVarsayılan davranışDöndürürFırlattığı veya başarısız olduğuNotlar
BarChart::fromData()list<string> $labels, list<int|float> $valuesDeğerler float’a dönüştürülürselfFırlatmazTek yapım yolu; yapıcı özeldir
BarChart::withBarColor()ChartColor $colorÇubuk dolgusu; varsayılan palet girdisi 0selfFırlatmazAkıcı; alıcıyı değiştirir
BarChart::withAxisColor()ChartColor $colorEksen konturu; varsayılan #333333selfFırlatmaz
BarChart::withBarGap()float $gapYuva genişliğinin bir kesri olarak boşluk; varsayılan 0.2selfFırlatmaz0.00.9 aralığına sıkıştırılır; aralık dışı girdi reddedilmez, sıkıştırılır
BarChart::withFontSize()float $sizePunto cinsinden etiket yazı tipi boyutu; varsayılan 7.0selfFırlatmaz
BarChart::render()ChartBox $boxEksenler, çubuklar, kategori etiketleri, beş değer işaretistring operatörleriFırlatmaz; boş veri '' döndürürPozitif olmayan bir maksimum 1.0’e göre ölçeklenir
LineChart::create()list<string> $labelsSerisiz chartselfFırlatmazYapıcı özeldir
LineChart::fromData()list<string> $labels, list<int|float> $valuesBir adsız seri eklerselfFırlatmazTek serili kolaylık
LineChart::addSeries()string $name, list<int|float> $values, ?ChartColor $color = nullnull bir renk, seri dizinine göre paletten otomatik atanırselfFırlatmazSeri adı, açıklama kullanımı için ayrılmıştır
LineChart::withAxisColor()ChartColor $colorEksen konturu; varsayılan #333333selfFırlatmaz
LineChart::withLineWidth()float $widthSeri kontur genişliği; varsayılan 1.5selfFırlatmaz
LineChart::withFontSize()float $sizeEtiket yazı tipi boyutu; varsayılan 7.0selfFırlatmaz
LineChart::withDots()bool $show, float $radius = 2.5Veri noktası işaretleyicileri; varsayılan olarak açıkselfFırlatmazİşaretleyiciler Bezier ile yaklaştırılan daireler olarak çizilir
LineChart::withGrid()bool $showYatay çeyrek ızgara; varsayılan olarak açıkselfFırlatmaz
LineChart::render()ChartBox $boxIzgara, eksenler, seri başına bir yol, etiketlerstring operatörleriFırlatmaz; seri yoksa '' döndürürİki noktadan kısa bir seri hiçbir yol çizmez
PieChart::fromData()list<string> $labels, list<int|float> $valuesOranlar, değer toplamından hesaplanırselfFırlatmazYapıcı özeldir
PieChart::withColors()list<ChartColor> $colorsSırayla, dilim başına bir renkselfFırlatmazEksik girdiler palete geri döner
PieChart::withStrokeColor()ChartColor $colorDilim ana hattı; varsayılan beyazselfFırlatmaz
PieChart::withFontSize()float $sizeEtiket yazı tipi boyutu; varsayılan 7.0selfFırlatmaz
PieChart::withPercentages()bool $showYüzde etiketleri; varsayılan olarak açıkselfFırlatmazEtiketler yalnızca 15 dereceden fazla süpüren dilimlerde işlenir
PieChart::withLegend()bool $showSağ taraf açıklaması; varsayılan olarak açıkselfFırlatmazAçıklama, kutu genişliğinden 80 punto ayırır
PieChart::render()ChartBox $boxSektörler, isteğe bağlı etiketler, isteğe bağlı açıklamastring operatörleriFırlatmaz; boş veri veya sıfır ya da altındaki bir toplam '' döndürürYaylar en fazla 90 derecelik Bezier segmentlerine bölünür
ChartBox::__construct()float $x, float $y, float $width, float $heightPunto cinsinden, PDF sol-alt kökeniFırlatmazfinal readonly; boyutlar doğrulanmaz
ChartBox::fromUserSpace()float $x, float $y, float $width, float $height, float $pageHeightSol-üst-kökenli bir dikdörtgeni PDF koordinatlarına çevirirselfFırlatmaz
ChartBox::right()yokx + widthfloatFırlatmazÖzellik değil, yöntem
ChartBox::top()yoky + heightfloatFırlatmazÖzellik değil, yöntem
ChartBox::inset()float $left, float $bottom, float $right, float $topVerilen girintilerle küçültülmüş alt kutuselfFırlatmazAşırı boyutlu girintiler negatif boyutlar verir; doğrulanmaz
ChartColor::__construct()float $r, float $g, float $b, her biri 0.01.0Fırlatmazfinal readonly; bileşenler sıkıştırılmaz
ChartColor::rgb()int $r, int $g, int $b, her biri 0255Bileşenleri 0.01.0 aralığına ölçeklerselfFırlatmaz
ChartColor::hex()string $hex# önekli veya yalın altı basamaklı hex kabul ederselfFırlatmazEksik sondaki basamaklar sıfır olarak çözülür
ChartColor::palette()int $indexYerleşik 12 renkli paletselfNegatif dizinde TypeErrorNegatif olmayan dizinler modulo 12 sarılır
ChartColor::strokeOperator()yokKontur renk operatörü (RG), üç ondalıkstringFırlatmazÖzellik değil, yöntem
ChartColor::fillOperator()yokDolgu renk operatörü (rg), üç ondalıkstringFırlatmazÖzellik değil, yöntem
public static function fromData(array $labels, array $values): self
public function withBarColor(ChartColor $color): self
public function withAxisColor(ChartColor $color): self
public function withBarGap(float $gap): self
public function withFontSize(float $size): self
public function render(ChartBox $box): string
public static function create(array $labels): self
public static function fromData(array $labels, array $values): self
public function addSeries(string $name, array $values, ?ChartColor $color = null): self
public function withAxisColor(ChartColor $color): self
public function withLineWidth(float $width): self
public function withFontSize(float $size): self
public function withDots(bool $show, float $radius = 2.5): self
public function withGrid(bool $show): self
public function render(ChartBox $box): string
public static function fromData(array $labels, array $values): self
public function withColors(array $colors): self
public function withStrokeColor(ChartColor $color): self
public function withFontSize(float $size): self
public function withPercentages(bool $show): self
public function withLegend(bool $show): self
public function render(ChartBox $box): string
public function __construct(
public float $x,
public float $y,
public float $width,
public float $height,
)
public static function fromUserSpace(
float $x,
float $y,
float $width,
float $height,
float $pageHeight,
): self
public function right(): float
public function top(): float
public function inset(float $left, float $bottom, float $right, float $top): self
public static function rgb(int $r, int $g, int $b): self
public static function hex(string $hex): self
public static function palette(int $index): self
public function strokeOperator(): string
public function fillOperator(): string

Üç oluşturucu da tek bir yaşam döngüsünü izler: statik bir fabrika, akıcı yapılandırma, tek bir render() çağrısı. Yapılandırma yöntemleri alıcıyı değiştirir ve onu döndürür; oluşturucular değişmez değer nesneleri değildir. render(), yapılandırmayı değiştirmeden okur; böylece yapılandırılmış bir oluşturucu birkaç kutuya işlenebilir. Her işleme, çıktısını bir kaydet/geri yükle grafik durumu çiftiyle sarar; böylece chart durumu sayfaya asla sızmaz. Koordinatlar iki ondalıkla, renk bileşenleri üç ondalıkla yayılır; bu da çıktıyı bayt-kararlı tutar. Metin, yapılandırılan boyutta /ChartFont yazı tipi kaynak adı üzerinden işlenir; çağıran, hedef sayfanın kaynak sözlüğüne bu adla bir yazı tipi kaydeder. Etiket dizeleri, dize işlenenlerine girmeden önce ters eğik çizgi ve parantezleri kaçış karakteriyle işler. Oluşturucular hiçbir yeniden akış, kırpma veya kapsayıcı pazarlığı gerçekleştirmez: yerleştirme çağırana aittir.

Bar ve line chart’ları, kutunun içinde sabit bir çizim girintisi ayırır: 40 punto sol, 20 alt, 10 sağ, 10 üst. Kalan çizim alanı, değerleri seri maksimumuna göre doğrusal olarak ölçekler. Sıfır veya altındaki bir maksimum, sıfıra bölmek yerine 1.0’e göre ölçeklenir; böylece tümü-sıfır veri, eksenleri sıfıra bölmeden düz içerikle işler. Her ikisi de X ve Y eksenlerini 0.5 punto genişlikte ve beş değer işaretini çeyrek konumlarda çizer. Bar chart’ları, bin ve bir milyonun üzerindeki işaret değerlerini K ve M sonekleriyle biçimlendirir; line chart’ları düz sayılar yazdırır.

Her değer, çizim genişliği boyunca eşit bir yuva kaplar. Çubuk, yuvayı eksi yapılandırılmış boşluk kesri doldurur ve yuvada ortalanır. Kategori etiketleri, çizim alanının 12 punto altına çizilir.

Izgara, etkinleştirildiğinde, eksenlerin ve serilerin altına açık gri (0.85 0.85 0.85 RG) dört yatay çeyrek çizgi çizer. Her seri, noktalarından geçen ve tüm çizim genişliğine yayılan bir çoklu çizgi çizer. İsteğe bağlı işaretleyiciler, her veri noktasında dört segmentli Bezier daireleri olarak çizilir. Seri renkleri, varsayılan olarak ekleme sırasına göre ardışık palet girdileridir.

Dilimler, pozitif X ekseninden başlayıp saat yönünün tersine süpürerek veri sırasında yerleşir. Her sektör yolu kapanır ve birleşik dolgu ve konturla (h B) boyanır; yaylar en fazla 90 derecelik Bezier segmentlerine bölünür. Yüzde etiketleri tam yüzdeye yuvarlanır ve yalnızca 15 dereceden fazla süpüren dilimlerde işlenir. Açıklama, etkinleştirildiğinde, sağda kutu genişliğinden 80 punto ayırır ve girdi başına 12 punto satır yüksekliğinde 8 puntoluk bir örnek işler. Yarıçap, kalan genişlik ile kutu yüksekliğinin küçüğünün yarısıdır, eksi 10 puntoluk bir kenar boşluğu.

ChartBox, sol-alt kökenli, PDF kullanıcı birimlerinde (punto) değişmez bir dikdörtgendir. ChartBox::fromUserSpace(), sol-üst-kökenli bir dikdörtgeni sağlanan sayfa yüksekliğine göre çevirerek dönüştürür. inset() yeni, daha küçük bir kutu döndürür; right() ve top() erişimci yöntemlerdir. ChartColor kendi kendine yeterlidir ve Core renk sınıflarına bağlı değildir. 12 girdili paleti, çağıran hiçbiri sağlamadığında seri ve dilim renklerini atar.

Bir chart türü veya özellik, Verified değerini yalnızca bir pro/tests/** armatürü onu çalıştırdığında kazanır. Hiçbir harici standart chart’ları yönetmez; bu nedenle kanıt, birim düzeyinde davranışsal kapsamdır.

Chart türü / özellikDurumKanıt (test yolu)GüvenNotlar
Bar chart — render, eksenler, çubuk dikdörtgenleri, boşluk sıkıştırma, boş/tümü-sıfır veri, K/M değer biçimlendirmeVerifiedpro/tests/Unit/Chart/BarChartTest.php; BarChartArithmeticCoverageTest.php; BarChartBoundaryCoverageTest.phphighGrafik durumu sarmalama, eksen çizgileri, çubuk yüksekliği oranları, işaret sayısı ve biçimlendirme sınırları öne sürülür.
Line chart — tek ve çok serili, çizgi yolu, eksenler, noktalar, ızgara, tek noktaVerifiedpro/tests/Unit/Chart/LineChartTest.php; LineChartCoverageTest.php; LineChartArithmeticCoverageTest.php; LineChartTypeCastCoverageTest.phphighÇok serili, tek noktalı çizgisiz, boş seri, ızgara ve nokta yolları kapsanır.
Pie chart — sektörler, Bezier segmentleme, yüzdeler, açıklama, sıfır/negatif toplamVerifiedpro/tests/Unit/Chart/PieChartTest.php; PieChartArithmeticCoverageTest.php; PieChartBoundaryCoverageTest.phphighSektör yolları, süpürme başına segment sayıları, 15 derecelik etiket eşiği, açıklama geometrisi ve boş-dize davranışı kapsanır.
ChartBox — koordinat dönüşümü (kullanıcı uzayından PDF’e), sayfa üst/alt, sıfır boyutlar, girintiVerifiedpro/tests/Unit/Chart/ChartBoxTest.phphighSayfa üstünde, altında ve sıfır-boyut kenarlarında sol-üst-kökenden sol-alt-kökene dönüşüm.
ChartColor — RGB ölçekleme, hex ayrıştırma, palet, kontur/dolgu operatörleriVerifiedpro/tests/Unit/Chart/ChartColorTest.phphigh0–255’ten 0–1’e ölçekleme, # önekli ve yalın hex, karışık büyük/küçük harf, 12 girdiden sonra palet sarması.
Oluşturucular arası gerileme sağlamlaştırmasıVerifiedpro/tests/Unit/Chart/ChartCoverageTest.phphighÜç oluşturucu artı değer biçimlendirme aritmetiği arasında paylaşılan gerileme paketi.
bar/line/pie dışındaki chart türleri (area, scatter, stacked, donut vb.)Not supportedhighHiçbir oluşturucu sunulmaz. Modül yüzeyi tam olarak bar, line, pie’dir. Dürüstçe belirtilir: bu “her chart türü” değildir.

Dürüst sayı: Verified 6 satır, Claimed 0, Not supported 1 (bar, line, pie dışında herhangi bir chart türü).

  • Hiçbir oluşturucu veride fırlatmaz. Yozlaşmış girdi boş bir dizeye indirgenir: boş bar veya line verisi, boş bir seri listesi ve sıfır ya da altındaki bir pie toplamı hepsi '' döndürür.
  • İki noktadan az bir line serisi hiçbir yol ve işaretleyici çizmez; eksenler ve etiketler yine de işlenir.
  • Negatif çubuk değerleri reddedilmez; çubuk dikdörtgeni X ekseninin altına uzanır.
  • Etiket ve değer sayıları karşılıklı doğrulanmaz. Çağıran, eşleşen uzunlukta listeler sağlar.
  • Sıfır veya negatif boyutlu bir ChartBox kabul edilir ve yozlaşmış çıktı üretir; çağıranlar kutuyu boyutlandırmalıdır.
  • Oluşturucular kırpmaz. Aşırı boyutlu bir chart, çizim altı kategori etiketleri veya uzun bir açıklama, amaçlanan sayfa bölgesinden taşabilir.
  • Chart yazı tipi kaynak adı altında yazı tipi eksik olan bir sayfa, tanımsız bir kaynağa başvuran metin operatörleri bırakır; görüntüleyici davranışı o zaman tanımsızdır.
  • ChartColor::hex() hiçbir doğrulama gerçekleştirmez; altı basamaktan kısa girdi, eksik bileşenleri sıfır olarak çözer. ChartColor::palette(), negatif bir dizinde TypeError ile başarısız olur; çünkü PHP’nin negatif modulosu hiçbir palet anahtarını çözmez.
  • Modül hiçbir kriptografi gerçekleştirmez; FIPS modunun hiçbir chart’a özgü davranışı yoktur.

Chart modülü PDF içerik akışı operatörleri yayar. Hiçbir harici chart, semboloji veya kriptografik standart çıktısını yönetmez; bu nedenle tek uygunluk yüzeyi, yayılan operatör akışıdır.

İddiaStandartMadde
Yayılan grafikler içerik akışı operatör modelini izler; çıktı, kaydedilmiş ve geri yüklenmiş bir grafik durumunun içine yerleşir.ISO 32000-2§8.1
Çubuklar, çizgiler, sektörler ve işaretleyiciler yol nesneleridir: oluşturma m veya re ile başlar ve bir yol boyama operatörüyle sonlanır.ISO 32000-2§8.5.2
Etiketler metin nesneleri olarak işlenir: konum BT’den sonra belirlenir ve glifler Tj metin gösterme operatörüyle boyanır.ISO 32000-2§9.2.2, §9.4.3

Tüm maddeler açıklanarak aktarılmıştır; bu sayfa hiçbir normatif metni yeniden üretmez. Bunlar yeterlilik ifadeleridir, sertifikalar değildir; NextPDF hiçbir sertifika tutmaz ve hiçbirini vermez. Akışın doğru işlenmesi ayrıca, çevreleyen belgenin iyi biçimlendirilmiş olmasına bağlıdır; bu da belge yazarının sorumluluğudur.

  • Beş sınıfın tümü @since 1.9.0 taşır ve nextpdf/pro 3.1.0 içinde günceldir.
  • Modül kendi kendine yeterlidir: oluşturucular yalnızca ChartBox ve ChartColor’a bağlıdır, hiçbir Core bağlaşımı yoktur.
  • Belirleyici çıktı, chart içeren belgeleri yeniden üretilebilir, diff-kararlı ve imzalamak veya arşivlemek için güvenli tutar.
  • Chart barındıran her sayfa için chart yazı tipi kaynak adı altında bir kez yazı tipi kaydedin.
  • Yapılandırılmış bir oluşturucuyu kutular arasında serbestçe yeniden kullanın; render() hiçbir durum değişikliği gerçekleştirmez.
  • Test kanıtı pro/tests/Unit/Chart/ altında bulunur; destek matrisi her Verified satırını kendi paketine bağlar.

Bu sayfa yalnızca dışarıdan gözlemlenebilir davranışı ve desteklenen genel API yüzeyini belgeler. Dahili ad alanı yolları, yardımcı sınıflar, mekanizma tabloları, çalışma kılavuzu dosya adları ve bilet önekleri kapsam dışıdır.