İçeriğe geç
getnextpdf.com

Pro sürüm

Optimizer

Optimizer, bir PDF’i yinelenen nesneler ve görüntü yeniden sıkıştırma potansiyeli açısından analiz eder, ardından tahmini boyut azaltmasını raporlar. Üç düzey, çıktı doğruluğunu dosya boyutuna karşı dengeler.

Bu yetenek NextPDF Pro (nextpdf/pro) ile birlikte gelir ve bir Pro katmanı lisans zarfıyla etkinleşir. Bu yetkilendirmeye 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.

Özellik başına ayrı bir lisans bayrağı yoktur. Optimizasyon düzeyi (lossless, balanced, aggressive) bir lisans anahtarı değil, bir çalışma zamanı parametresidir.

Terminal window
composer require nextpdf/pro:^3

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

PdfOptimizer, bir nesne yineleme kaldırıcısını ve bir görüntü yeniden sıkıştırıcısını koordine eder. Ham PDF baytları verildiğinde, yinelenen nesne gruplarını bulur (düzey buna izin verdiğinde), görüntüleri analiz eder ve her görüntü için düzeyin hedef kalitesinde sıkıştırmayı tahmin eder. Bulguları; orijinal boyutu, tahmini optimize edilmiş boyutu, kaldırılan nesneleri ve öncesi ile sonrası görüntü sayılarını raporlayan bir OptimizationResult’a toplar.

OptimizationLevel, ödünleşimi tanımlar: lossless, görüntü kalitesini korur ve bayt-kararlı çıktı için yineleme kaldırmayı atlar; balanced, yineleme kaldırır ve yüzde 75 görüntü kalitesini hedefler; aggressive, yineleme kaldırır, alt örnekler ve yüzde 50 kaliteyi hedefler.

Optimizer, yeniden yazmaz, analiz eder. analyze(), olası tasarrufları tahmin eder ve girdiyi değiştirmeden bir OptimizationResult döndürür. Bu, geçişi tahrip edici olmaktan çıkarır ve onu Writer aracılığıyla uygulayıp uygulamayacağınıza karar vermenizi sağlar. Düzey soyutlaması, ödünleşimi tek bir yerde tutar: lossless, deduplicateStreams() işlevinden false döndürür; böylece çıktı bayt-özdeş kalabilir, balanced ve aggressive ise görüntü akışlarını daha düşük kalite hedeflerinde yeniden sıkıştırır. Elde edilebilir tasarruflar, bir belgenin akışlarını ve görüntülerini zaten nasıl kodladığına bağlıdır; bu nedenle modül, sabit bir manşet rakamı yerine gerçekte mevcut olan nesnelerden bir tahmin raporlar. Tasarım arka planı: Akışlar ve filtreler.

  • analyze($pdfData), bir OptimizationResult döndürür; girdiyi değiştirmez.
  • Lossless düzeyi, çıktının bayt-kararlı kalabilmesi için akış yineleme kaldırmayı atlar; balanced ve aggressive, yineleme kaldırmayı etkinleştirir.
  • Görüntü kalitesi hedefleri, sırasıyla lossless, balanced ve aggressive için yüzde 100, 75 ve 50’dir.
  • Tahmini optimize edilmiş boyut, asla sıfırın altına düşmez ve asla orijinali aşmaz.
  • withLevel($level), istenen düzeyde yeni bir optimize edici döndürür; örnekler değiştirilmez.

Aşağıdaki, belgelenmiş genel API’yi yansıtır. Depo, bu modül için çalıştırılabilir bir örnek sunmaz.

use NextPDF\Pro\Optimizer\PdfOptimizer;
$result = (new PdfOptimizer())->analyze($pdfBytes);
use NextPDF\Pro\Optimizer\PdfOptimizer;
use NextPDF\Pro\Optimizer\OptimizationLevel;
$optimizer = new PdfOptimizer(OptimizationLevel::Aggressive);
$result = $optimizer->analyze($pdfBytes);
$savings = $result->originalSize > 0
? (1 - $result->optimizedSize / $result->originalSize) * 100
: 0.0;
  • analyze(), potansiyeli tahmin eder; optimize edilmiş bir belge üretmek için onu Writer modülüyle eşleştirin.
  • Lossless düzeyi, kaliteyi koruduğu ve yineleme kaldırmayı atladığı için kasıtlı olarak çok az boyut azaltması sağlar.
  • Sonrası görüntü sayısı, atılan görüntüleri değil, yineleme kaldırma yoluyla kaldırılan görüntüleri yansıtır.

Analiz, girdi boyutunda doğrusaldır; buna nesne ve görüntü yapılarını tarama maliyeti eklenir. Düzey, yineleme kaldırma ve yeniden sıkıştırma tahminlerinin ne kadar agresif olacağını denetler. Yayımlanmış sabit bir boyut azaltma rakamı yoktur; sonuçlar tamamen belgeye bağlıdır. Temsili belgelerle ölçün.

Girdiyi güvenilmez olarak değerlendirin. Analiz salt okunur kalır ve gömülü içeriği çalıştırmaz. Bu modül hiçbir belge içeriğini günlüğe kaydetmez.

Optimizasyon, ISO 32000-2 tarafından tanımlanan PDF nesne ve görüntü modeli üzerinde çalışır; kaynak, ilgili kuralları açıklar. RAG külliyatı yazma sırasında kullanılamadığından, bu sayfa hiçbir harici kural tanımlayıcısı öne sürmez ve uygunluk beyanlarını modülün testleriyle doğrulanan davranışla sınırlar.

Enterprise, Optimizer davranışını değiştirmez. Enterprise, ayrı olarak belgelenen daha üst katman uyumluluk ve arşivleme özellikleri ekler; bunlar optimizasyon potansiyelini analiz etmek için gerekli değildir.

Pro olmadan, NextPDF Core’un temel optimizasyonunu kullanın; nesne yineleme kaldırma ve ayarlanabilir görüntü yeniden sıkıştırma analizi, Pro eklentileridir. Bkz..

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 ticket önekleri kapsam dışıdır.