İçeriğe geç
getnextpdf.com

Pro sürüm

Belge

Document 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.

Bu 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.

Terminal window
composer require nextpdf/pro:^3

Kod, NextPDF\Pro\Document ad alanı altında yer alır.

İ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.

Bir 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.

  • PdfSplitter::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() ve addEntry(), 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.

Aş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)]);
use 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).
}
  • 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.

Bö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.

Girdiyi 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.

Portfö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, 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.

Pro 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/.

Bu 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.