Pro sürüm
Belge
Bir bakışta
“Bir bakışta” başlıklı bölümDocument modülü, bir PDF’i sayfa aralığına göre bölümlere ayırır ve sıralanabilir şema sütunlarıyla PDF Portföyleri (Koleksiyonlar) oluşturur. Her iki işlem de husumetli girdiye karşı sınırlandırılmıştır.
Kullanılabilirlik ve lisanslama
“Kullanılabilirlik ve lisanslama” başlıklı bölümBu yetenek NextPDF Pro (nextpdf/pro) içinde sunulur ve Pro katmanı bir lisans zarfıyla etkinleşir. Bu yetkiye sahip olmayan bir dağıtım, yeteneğin sınıflarını yüklemez. Document, Pro sürümünün bir parçasıdır ve ayrı bir özellik başına lisans bayrağı yoktur. Sürümleri karşılaştırın ve lisans edinin.
Kurulum
“Kurulum” başlıklı bölümcomposer require nextpdf/pro:^3Kod, NextPDF\Pro\Document ad alanı altında yer alır.
Kavramsal genel bakış
“Kavramsal genel bakış” başlıklı bölümİki yetenek sağlanır:
PdfSplitter, sayfa aralıklarını bağımsız PDF bölümlerine çıkarır. Ham girdideki sayfa nesnelerini tarayarak sayfaları algılar ve seçilen sayfaları en az düzeyde bir katalog ve sayfa ağacıyla sarar. Aralık tabanlı bölmeyi, sabit boyutlu bölmeyi (splitEvery) ve tek aralık çıkarımını (extractPages) destekler.PdfPortfolio, dosya eklerini tanımlı bir şemayla bir araya getiren bir PDF Koleksiyonu sözlüğü oluşturur. Döşeme, ayrıntı ve gizli görünüm modlarını destekler ve belge kataloğuna dâhil edilmeye uygun bir sözlük yayar.
Neden bu şekilde çalışır
“Neden bu şekilde çalışır” başlıklı bölümBir PDF’i bölmek, bir bayt dilimi değildir. Bir sayfa nesnesi; paylaşılan kaynaklara, yazı tiplerine ve içerik akışlarına dolaylı başvuruyla atıfta bulunur. Ayrıca sayfa ağacı atalarından /MediaBox ve /Resources özniteliklerini devralır. Bu nedenle bölücü, her bölümü kendi kendine yeten bir nesne grafiği olarak yeniden oluşturur: seçilen sayfaların geçişli başvuru kapanışını dolaşır, devralınan öznitelikleri somutlaştırır, yeni bir kimlik uzayına yeniden numaralandırır ve bayt düzeyinde kesin uzaklıklara sahip bir çapraz başvuru tablosu yazar. Kapanış dolaşımı sınırlandırılmıştır, çünkü aksi takdirde husumetli bir yayılım grafiği tek bir bölüme sınırsız iş çekebilir. Sonuç, sarkan başvuruları olan bir parça olarak değil, geçerli bir bağımsız PDF olarak açılır.
Tasarım arka planı: Bir PDF dosyasının anatomisi.
Davranış sözleşmesi
“Davranış sözleşmesi” başlıklı bölümPdfSplitter::split($pdfData, $ranges, $maxBytes = 100_000_000, $maxRanges = 1000), bir girdi boyutu sınırı ve bir aralık sayısı sınırı uygular ve PDF üst bilgisiyle başlamayan girdiyi reddeder.splitEvery($pdfData, $pagesPerSegment), 1’in altındaki bir bölüm boyutunu reddeder; son bölüm daha az sayfa içerebilir.PdfPortfolio, oluşturma sırasında döşeme, ayrıntı veya gizli dışındaki herhangi bir görünüm modunu reddeder.addSchema()veaddEntry(), akıcı zincirleme için portföyü döndürür;generateCollectionDictionary(), Koleksiyon sözlüğü dizesini döndürür.- Şema alanı adları, PDF ad nesneleri olarak kullanım için temizlenir; dize değerleri, PDF değişmez dizeleri için kaçışlanır.
Kod örneği — Hızlı başlangıç
“Kod örneği — Hızlı başlangıç” başlıklı bölümAşağıdaki örnek, belgelenmiş genel API’yi yansıtır. Depo, bu modül için çalıştırılabilir bir örnek içermez.
use NextPDF\Pro\Document\PdfSplitter;use NextPDF\Document\PageRange;
$result = (new PdfSplitter())->split($pdfBytes, [new PageRange(1, 5)]);Kod örneği — Üretim
“Kod örneği — Üretim” başlıklı bölümuse NextPDF\Pro\Document\PdfSplitter;use NextPDF\Document\PageRange;
$splitter = new PdfSplitter();
try { $result = $splitter->split( $pdfBytes, [new PageRange(1, 10), new PageRange(11, 20)], maxBytes: 50_000_000, maxRanges: 100, );} catch (\InvalidArgumentException $e) { // Input rejected (not a PDF, or limits exceeded).}Uç durumlar ve dikkat edilmesi gerekenler
“Uç durumlar ve dikkat edilmesi gerekenler” başlıklı bölüm- Bölücü, her bölümü gerçek, bayt düzeyinde kesin bir çapraz başvuru tablosuyla yeni bir nesne grafiği olarak yeniden oluşturur; bölümler geçerli bağımsız PDF’lerdir. Kaynak bayt düzenini korumak yerine yeni bir kimlik uzayına yeniden numaralandırır; bu nedenle artımlı güncelleme veya imzalama iş akışları için bölüm baytlarını Writer modülüne verin.
- Hiçbir sayfayla eşleşmeyen bir aralık, bir hata yerine en az düzeyde tek sayfalık bir bölüm verir.
- Portföy sıralaması varsayılan olarak ilk şema alanına, artan düzendedir.
Performans
“Performans” başlıklı bölümBölme ve portföy oluşturma, girdi boyutu ve giriş sayısında doğrusaldır. Varsayılan girdi tavanı 100 MB ve varsayılan aralık tavanı 1000’dir; her ikisi de çağıran tarafından aşağı yönde ayarlanabilir. Temsili belgelerle ölçün.
Güvenlik notları
“Güvenlik notları” başlıklı bölümGirdiyi güvenilmeyen olarak değerlendirin. Boyut ve sayı korumaları kaynak kullanımını sınırlar. Modül, çıktı sözlüğüne ulaşmadan önce alan adlarını temizler ve dize değerlerini kaçışlar. Hiçbir belge içeriğini günlüğe kaydetmez.
Uygunluk
“Uygunluk” başlıklı bölümPortföy sözlüğü, PDF Koleksiyonları modelini izler ve bölücü, ISO 32000-2 tarafından tanımlanan sayfa nesnesi modelini izler; kaynak, ilgili maddeleri ek açıklamayla belirtir. RAG derlemi, yazım sırasında kullanılamadığından bu sayfa hiçbir harici madde tanımlayıcısı öne sürmez ve uygunluk ifadelerini modülün testleriyle doğrulanan davranışla sınırlar.
Enterprise sınır notu
“Enterprise sınır notu” başlıklı bölümEnterprise, Document davranışını değiştirmez. Enterprise, ayrı olarak belgelenen üst katman arşivsel ve uyumluluk özellikleri ekler; bunlar bölme veya Portföy oluşturma için gerekli değildir.
Core geri dönüşü / alternatifi
“Core geri dönüşü / alternatifi” başlıklı bölümPro olmadan, NextPDF Core’un temel belge ilkellerini kullanın; sayfa aralığına göre bölme ve Portföy oluşturma Pro eklentileridir. Bkz. /modules/document/.
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ı, runbook dosya adları ve bilet önekleri kapsam dışıdır.