Pro sürüm
Filtre
Bir bakışta
“Bir bakışta” başlıklı bölümNextPDF\Pro\Filter, iki odaklı yardımcı sağlar: PDF /DecodeParms sözlüğü için
bir ayrıştırıcı ve FlateDecode edilmiş akışlara uygulanan PNG kestiricisi için
bir ters filtre. Pro Diff ve Classifier çıkarıcılarının kullandığı kestirici
desteğidir; genel amaçlı bir filtre çerçevesi değildir.
Kullanılabilirlik ve lisanslama
“Kullanılabilirlik ve lisanslama” başlıklı bölümBu yetenek NextPDF Pro (nextpdf/pro) içinde sunulur ve bir Pro katmanı
lisans zarfıyla etkinleşir. Bu yetkiye sahip olmayan bir dağıtım, yeteneğin
sınıflarını yüklemez. Sürümleri karşılaştırın ve bir lisans edinin.
Filter sınıfları, nextpdf/pro yüklü olduğunda her zaman kullanılabilir; hiçbir
çalışma zamanı yetenek bayrağı bu modülü kapılamaz.
Kurulum
“Kurulum” başlıklı bölümcomposer require nextpdf/pro:^3Kavramsal genel bakış
“Kavramsal genel bakış” başlıklı bölümPDF akışları FlateDecode ile sıkıştırılmış olabilir ve sıkıştırmayı iyileştirmek
için ek olarak bir kestiriciyle ön işlenebilir. ISO 32000-2:2020 §7.4.4.4,
kestirici parametrelerini (/Predictor, /Columns, /Colors,
/BitsPerComponent) ve PNG kestirici ailesini (etiketler 10–15) tanımlar.
DecodeParms, bir/DecodeParmssözlük parçasını makul varsayılanlarla (kestirici 1, sütun 1, renk 1, bileşen başına bit 8) değişmez bir değer nesnesine ayrıştırır.isPngPredictor(), 10–15 etiketleri için doğrudur.PngPredictor, beş PNG filtre türünün — None, Sub, Up, Average, Paeth — ve Optimum’un (kestirici 15, satır başına etiket) tersini uygular. Parametreleri doğrular ve aralık dışı değerlerde veya kesik bir satırdaInvalidArgumentExceptionoluşturur.
Bu modül, bir akışı okurken mevcut bir kestiriciyi tersine çevirir. PDF akış filtrelerinin tam kümesini uygulamaz ve filtre ayarlama kancaları sağlamaz.
Neden bu şekilde çalışır
“Neden bu şekilde çalışır” başlıklı bölümModül, genel amaçlı bir filtre çerçevesi sunmak yerine mevcut bir kestiriciyi
tersine çevirir. Pro Diff ve Classifier çıkarıcıları yalnızca bir üreticinin
önceden yazdığını okur, bu yüzden dar bir kapsam yeterlidir. Bu kapsam, herhangi
bir bayt işlenmeden önce her girdinin sınırlandırılmasına olanak tanır.
DecodeParms::fromDictionary(), ayrıştırma zamanındaki daraltma noktasıdır:
negatif veya aşırı büyük geometriyi reddeder ve bir anahtarın bulunmadığı yerde
DecodeParms::__construct() varsayılanlarını uygular. PngPredictor, bu sınırları
uygulama zamanında yeniden denetler, böylece düşmanca bir /DecodeParms büyük bir
tahsis yerine türlü bir hata oluşturur. Çağıranlar DecodeParms::isPngPredictor()
üzerinde dallanır ve TIFF kestiricisini yalnızca 10–15 etiketlerini işleyen bir
ters filtreden uzak tutar.
Tasarım arka planı: Akışlar ve filtreler.
Davranış sözleşmesi
“Davranış sözleşmesi” başlıklı bölümDecodeParms::fromDictionary(string $raw): self— boşluğa toleranslı tamsayı eşleştirmesi; eksik anahtarlar varsayılanlarını korur.PngPredictor::inverse(string $raw, int $columns, int $colors, int $bitsPerComponent, int $predictor): string— kestirici 10–15 olmalıdır; sütunlar ve renkler ≥ 1 olmalıdır; bileşen başına bit 1, 2, 4, 8 veya 16 olmalıdır; hesaplanan adımdan kısa bir satırInvalidArgumentExceptionoluşturur.- Belirlenimcilik. Çıktı, girdilerin saf bir fonksiyonudur.
Genel API yüzeyi
“Genel API yüzeyi” başlıklı bölüm| Tür | Çeşit | Temel üyeler |
|---|---|---|
NextPDF\Pro\Filter\DecodeParms | final readonly class | __construct(int $predictor = 1, int $columns = 1, int $colors = 1, int $bitsPerComponent = 8), static fromDictionary(string $raw): self, isPngPredictor(): bool |
NextPDF\Pro\Filter\PngPredictor | final class | static inverse(string $raw, int $columns, int $colors, int $bitsPerComponent, int $predictor): string |
Kod örneği — Hızlı başlangıç
“Kod örneği — Hızlı başlangıç” başlıklı bölüm<?php
declare(strict_types=1);
use NextPDF\Pro\Filter\DecodeParms;use NextPDF\Pro\Filter\PngPredictor;
$parms = DecodeParms::fromDictionary('<< /Predictor 15 /Columns 640 /Colors 3 >>');
if ($parms->isPngPredictor()) { $raw = PngPredictor::inverse( $flateDecodedBytes, $parms->columns, $parms->colors, $parms->bitsPerComponent, $parms->predictor, );}Kod örneği — Üretim
“Kod örneği — Üretim” başlıklı bölüm<?php
declare(strict_types=1);
use InvalidArgumentException;use NextPDF\Pro\Filter\DecodeParms;use NextPDF\Pro\Filter\PngPredictor;
function undoPredictor(string $decoded, string $dictFragment): string{ $parms = DecodeParms::fromDictionary($dictFragment);
if (! $parms->isPngPredictor()) { return $decoded; // no predictor, or TIFF predictor — return as-is }
try { return PngPredictor::inverse( $decoded, $parms->columns, $parms->colors, $parms->bitsPerComponent, $parms->predictor, ); } catch (InvalidArgumentException) { return $decoded; // malformed predictor metadata — fail safe }}Uç durumlar ve dikkat edilmesi gerekenler
“Uç durumlar ve dikkat edilmesi gerekenler” başlıklı bölüm- TIFF kestiricisi (etiket 2),
DecodeParmstarafından tanınır ancakPngPredictortarafından ters filtrelenmez (yalnızca 10–15 kabul eder). ÇağıranlarisPngPredictor()üzerinde dallanmalıdır. - Hesaplanan adımdan kısa bir kestirici satırı reddedilir; sessizce kesilmez.
- Satır adımı,
columns * colors * bitsPerComponentdeğerinden hesaplanır; uyumsuz/DecodeParmsile gerçek akış düzeni, bozuk çıktı yerine bir parametre veya kesilme hatası üretir.
Performans
“Performans” başlıklı bölümPngPredictor::inverse(), küçük bir bayt başına sabitle akış uzunluğunda
doğrusaldır. DecodeParms ayrıştırması, birkaç sınırlı düzenli ifade
eşleştirmesidir. Bkz. performance_budget.
Güvenlik notları
“Güvenlik notları” başlıklı bölümParametre aralıkları, herhangi bir bayt işlemeden önce doğrulanır ve kesik bir satır, sınır dışına okumak yerine hata oluşturur. Güvenilmeyen akışlarda kestiricileri tersine çeviren çağıranlar, Pro Diff ve Classifier çıkarıcılarının yaptığı gibi açılmış boyutu da yukarı akışta sınırlamalıdır.
Uygunluk
“Uygunluk” başlıklı bölüm| İddia | Standart maddesi | Durum |
|---|---|---|
/DecodeParms parametreleri ve varsayılanları | ISO 32000-2:2020 §7.4.4.4 | Doğrulandı (birim paketi) |
| PNG kestirici ters filtresi, etiketler 10–15 | ISO 32000-2:2020 §7.4.4.4 | Doğrulandı (birim paketi) |
| Tam PDF akış filtresi çerçevesi | — | Desteklenmiyor (kapsam dışı) |
Core geri dönüşü / alternatifi
“Core geri dönüşü / alternatifi” başlıklı bölümPNG kestirici tersine çevirme için hiçbir Core eşdeğeri sunulmaz. Core’un kendi akış işleme mekanizması motora içkindir ve bu genel yüzeyin parçası değildir.
Enterprise sınır notu
“Enterprise sınır notu” başlıklı bölümBu, dar kapsamlı bir kestirici yardımcısıdır. Bir kriptografik filtre, bir içerik temizleyici veya bir veri yeniden yapılandırma/etkisizleştirme bileşeni değildir; bu konular kapsam dışıdır.
Yayın sınırı
“Yayın sınırı” başlıklı bölümBu sayfa yalnızca dışarıdan gözlemlenebilen davranışı ve desteklenen genel API yüzeyini belgeler. İç ad alanı yolları, yardımcı sınıflar, mekanizma tabloları, çalıştırma kılavuzu dosya adları ve talep önekleri kapsam dışıdır.