İçeriğe geç
getnextpdf.com

Pro sürüm

Projection

Projection, bir PDF içerik akışını düz bir belirteç listesine ayrıştırır ve bu belirteçlerden yeni bir içerik akışı yayar. Yayma, açıkça bildirilmiş bir amaç gerektirir. Bu modül, genel amaçlı bir PDF düzenleyicisi değildir.

Not. Buradaki “Projection”, içerik akışı belirteci izdüşümü anlamına gelir. Koordinat veya coğrafi konum izdüşümü değildir. Coğrafi konum özellikleri için Geo modülüne bakın.

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. Gereken bir ProjectionIntent argümanı, bir lisans anahtarı değil, API düzeyinde yaymayı kapar.

Terminal window
composer require nextpdf/pro:^3

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

ContentProjectionWriter, üç statik işlem sağlar:

  • tokenize(), bir içerik akışını düz, sıralı bir belirteç listesine ayrıştırır. Bu salt okunurdur ve amaç gerektirmez.
  • emit(), bir (muhtemelen değiştirilmiş) belirteç listesinden yeni bir içerik akışı yazar. Bir ProjectionIntent gerektirir.
  • roundTrip(), doğrulama için değişiklik olmadan belirteçleştirir ve yeniden yayar.

Çıktı, kavramsal olarak yeni bir içerik akışıdır, orijinalin düzenlenmiş bir kopyası değildir. Yayıcı, boşluk ve yorumları normalize eder ancak operatör dizisini ve işlenen değerlerini tam tutar. Amaç enum’unun tam olarak iki durumu vardır — temizleme (karartma) ve steganografik gömme — ve kasıtlı olarak hiçbir genel durumu yoktur; böylece statik analiz, istenmeyen kullanımı algılayabilir.

Projection, genel amaçlı bir PDF düzenleyicisi olmayı reddeder. Yayma, düz bir belirteç listesinden taze bir içerik akışını yeniden oluşturur; böylece orijinal, yerinde asla değiştirilmez. Karartmayı güvenilir kılan şey, bu tek yönlü modeldir: kaldırılan belirteçler, üzerine boyanmak yerine çıktıda yer almaz. Bu nedenle emit(), açık bir ProjectionIntent talep eder ve enum yalnızca temizleme ile steganografik gömmeyi sunar — genel bir durum yoktur. Statik analiz de bildirilmiş, bilinen bir amaçtan yoksun her yaymayı işaretleyebilir. Tasarım, düzenleme kolaylığını, yıkıcı amacın çağrı yerinde her zaman görünür olması güvencesiyle değiş tokuş eder.

Tasarım arka planı: Karartma siyah bir dikdörtgen değildir.

  • tokenize($contentStream), dizeleri, adları, sayıları, dizileri, sözlükleri, mantıksal değerleri, null’ı ve operatörleri kapsayan bir belirteç listesi döndürür.
  • emit($tokens, $intent), açık bir amaç gerektirir; tür sistemi bunu çağrı yerinde uygular.
  • roundTrip() çıktısı, girdiyle bayt-özdeş değildir, ancak operatör dizisi ve işlenen değerleri eşleşir.
  • Yayıcı, tamsayı ve kayan nokta ayrımını korumak için sayıları biçimlendirir ve değişmez dizeleri yeniden kaçar.
  • İki bildirilmiş amaç, temizleme (yıkıcı, geri döndürülemez bir karartma işlemi) ve steganografik gömmedir.

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\Projection\ContentProjectionWriter;
$tokens = ContentProjectionWriter::tokenize($contentStream);
use NextPDF\Pro\Projection\ContentProjectionWriter;
use NextPDF\Pro\Projection\ProjectionIntent;
$tokens = ContentProjectionWriter::tokenize($contentStream);
// Validate first: a clean round-trip must hold before any modification.
$check = ContentProjectionWriter::roundTrip($contentStream);
// Apply your modification to $tokens, then emit with a declared intent.
$output = ContentProjectionWriter::emit($tokens, ProjectionIntent::Sanitization);
  • Bir değiştir-ve-yay dizisine güvenmeden önce roundTrip()’i çalıştırın ve doğrulandığını teyit edin. Başarısız bir gidiş-dönüşü bir durma koşulu olarak değerlendirin.
  • Temizleme amacı geri döndürülemezdir. Kaldırılan içerik, çıktıdan kurtarılamaz.
  • Yayıcı, boşluğu normalize eder ve yorumları düşürür; bu nedenle değiştirilmemiş bir gidiş-dönüş için bile orijinalle bayt düzeyinde karşılaştırma farklılık gösterir.

Belirteçleştirme ve yayma, içerik akışı uzunluğunda doğrusaldır. Belirteçleyici, sekizlik kaçış okumalarını ve onaltılık dize işlemeyi sınırlar. Yayımlanmış bir verim değeri yoktur. Temsili içerik akışlarıyla ölçün.

Gereken amaç argümanı, genel bir düzenleyici olarak kötüye kullanımı önler. Temizleme amacı yıkıcı ve geri döndürülemezdir; önce gidiş-dönüşü doğrulayın ve dağıtımdan önce karartılmış çıktıyı teyit edin. Bu modül, hiçbir içeriği günlüğe kaydetmez.

Belirteçleştirme, ISO 32000-2’deki sözcüksel ve içerik akışı kurallarını izler; 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, Projection davranışını değiştirmez. Enterprise, ayrı olarak belgelenen daha üst katman gizlilik ve uyumluluk özellikleri ekler; bunlar, izdüşüm API’sini kullanmak için gerekli değildir.

Bir Core eşdeğeri yoktur. Pro olmadan, çağıranlar kendi içerik akışı belirteçleyicilerini oluşturmalıdır; amaç kapılı izdüşüm modeli, yalnızca Pro’ya özgü bir eklentidir.

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ışındadır.