İçeriğe geç
getnextpdf.com

Pro sürümkararlılık: Deneysel

C2PA önizleme yeteneği durumu

Önizleme yeteneği durumu. Asla GA değildir. Bu sayfa, C2PA yüzeyinin bir önizleme olarak bugün ne yaptığını belirtir. Bir uygunluk iddiası değildir, bir sertifikasyon değildir ve NextPDF’in C2PA-imzalı dosyalar ürettiğine dair bir ifade değildir. Yüzey bir önizlemedir ve asla genel kullanıma sunulmuş olarak tanımlanmaz.

NextPDF Pro, C2paCapabilityStatus aracılığıyla bir Content Credentials (C2PA) önizleme yüzeyi açığa çıkarır. Bu sayfa, o yüzey için dürüst sınırdır: neyin her zaman kullanılabilir olduğu, neyin katılımlı bir taslak bayrağının arkasında kaldığı ve neden hiçbir nihai durum iddiasında bulunulmadığı.

Yüzeyin iki net biçimde ayrılmış katmanı vardır ve ayrım, sınırın tüm amacıdır:

  • Her zaman kullanılabilir — kararlı dikiş. ManifestStore ve C2paManifestEmbedder arabirimi, dondurulmuş, satıcıdan bağımsız bir dikiştir. Bir Manifest Store’u her iki yönde de taşıyabilirler: embed(), çağıranın sağladığı bir Store’un baytlarını bir PDF’e yazar ve extract(), bir Store’u geri ayrıştırır (hiçbiri bulunmadığında null döndürür). Bu dikiş hiçbir iddia sentezi yapmaz — asla kendisi savlar ya da iddialar oluşturmaz; çağıranın zaten elinde tuttuğu opak bir ManifestStore’u taşır.
  • Katılımlı bayrağın arkasında — iddia sentezi. Bir Manifest Store’u gerçekten oluşturma (iddiayı ve içerik-özet savını bir araya getirme) yalnızca ExperimentalC2paEmbedder içinde, varsayılan olarak kapalı bir env bayrağının arkasında bulunur. Bu, taslak biçimli, haber vermeden değişebilen parçadır.

Yani kesin ifade şudur: ayıklama ve bayt-taşıma her zaman erişilebilirdir; manifest içeriğinin sentezi yalnızca önizleme bayrağı açıkça etkinleştirildiğinde erişilebilirdir.

Yük taşıyan karar, her şeyi yapan tek bir gömücü değil, kararlı bir taşıma dikişini uçucu sentez yolundan ayırır. C2PA-PDF profili hâlâ dış bir çalışma grubuna aittir ve dondurulmuş değildir. Onun Claim Signature kutusu (c2cs, bir COSE_Sign1 yapısı) sürüklenmeye en yatkın parçadır. Bu nedenle sentez o kutuyu atlar ve varsayılan olarak kapalı bir bayrağın arkasında bulunur; ayıklama-ve-taşıma ise dondurulmamış hiçbir alana bağlı değildir ve herkes için erişilebilir kalır. Durum nesnesi, generallyAvailable ve conformanceClaimed sabit kodlu false olacak biçimde olgunluğu veri olarak açığa çıkarır; böylece çağıranlar üretici niyetini doğrulanmış bir sonuçla karıştıramaz. Bu ayrım, ekiplerin kalıcı dikişi şimdi benimsemesine ve imzalı bir adaptörü daha sonra eklemesine olanak tanır; NextPDF’in henüz tutamayacağı hiçbir tel biçimi sözü verilmeden.

Tasarım arka planı: Bir denetçiye verebileceğiniz uygunluk.

C2paCapabilityStatus, yüzeyin durumunu düz yazı olarak değil, veri olarak açıkça bildirir. generallyAvailable ve conformanceClaimed özellikleri sabit kodlu false’tur ve bayraktan bağımsız olarak false kalır; önizlemeyi etkinleştirmek yalnızca previewEnabled özelliğini değiştirir. maturity belirteci, iddiasız preview-draft etiketidir ve specPin, sabitlenmiş taslak işlemesini kaydeder. Bir çağıran “imzalı ve doğrulanmış” değil, “preview” okur.

use NextPDF\Pro\Compliance\C2pa\C2paCapabilityStatus;
// Reads the env flag live; performs no I/O.
$status = C2paCapabilityStatus::current();
$status->previewEnabled; // bool — true only if the opt-in env flag is set
$status->generallyAvailable; // false (always)
$status->conformanceClaimed; // false (always)
$status->maturity; // 'preview-draft'
$status->specPin; // '4e2afed8' (pinned draft commit, short)
$status->envGate; // 'NEXTPDF_FEATURE_PREVIEW_C2PA_DRAFT'
echo $status->summary();
// "C2PA preview-draft surface is present but switched off;
// the C2PA-PDF profile is not yet final."

C2PA belirtimi, dış bir çalışma grubu tarafından sürdürülür ve NextPDF’in hedefleyeceği profil dondurulmuş değildir. Profil dondurulmuş olmadığı için önizleme, kasıtlı olarak hiçbir nihai durum iddiasında bulunmaz. Çalışma grubu profili kararlı hâle geldiğinde değişecek olan, yüzeyin pazarlaması değil durumudur.

Katılım, tek bir süreç-ortam değişkenidir, NEXTPDF_FEATURE_PREVIEW_C2PA_DRAFT. Canlı okunur ve "1" dizesine karşı katı biçimde karşılaştırılır — başka herhangi bir değer (0, true, yes, boş dize ya da yokluk dahil) KAPALI olarak ele alınır. Tek başına bir Pro lisansı onu etkinleştirmez; operatör bilinçli olarak katılmalıdır.

// Opt in for the current process BEFORE constructing the embedder.
putenv('NEXTPDF_FEATURE_PREVIEW_C2PA_DRAFT=1');
use NextPDF\Pro\Compliance\C2pa\Experimental\ExperimentalC2paEmbedder;
$embedder = new ExperimentalC2paEmbedder();
// Synthesise a draft-shaped Manifest Store binding the host PDF by SHA-256.
$pdfBytes = file_get_contents('input.pdf');
$store = $embedder->buildManifestStore($pdfBytes, 'my-app/1.0.0');
// The result is an opaque ManifestStore; $store->toBytes() is its serialisation.

Gerçek bir dağıtımda bayrağı başlangıçta ayarlayın (çalışma zamanında putenv() ile değil), açık bir insan katılımına bağlayın ve deneysel gömücüye dokunmadan önce yetenek durumunu denetleyin; böylece taslak yola yalnızca bilerek ulaşılır.

use NextPDF\Pro\Compliance\C2pa\C2paCapabilityStatus;
use NextPDF\Pro\Compliance\C2pa\Experimental\ExperimentalC2paEmbedder;
// Set NEXTPDF_FEATURE_PREVIEW_C2PA_DRAFT=1 in the environment at process boot.
$status = C2paCapabilityStatus::current();
if (!$status->previewEnabled) {
// Flag off: do NOT instantiate the experimental embedder — its
// constructor would throw. Fall back to your non-preview path.
return;
}
// Surface the draft pin to the operator. The bytes are transient:
// re-embed once a stable adapter ships. Run `composer c2pa:draft-status`
// in CI to fail the build if the pinned snapshot goes stale.
$pinnedDraft = ExperimentalC2paEmbedder::SPEC_PIN_SHA; // 4e2afed8…
$pinnedDate = ExperimentalC2paEmbedder::SPEC_PIN_DATE; // 2026-04-26
$embedder = new ExperimentalC2paEmbedder();
$store = $embedder->buildManifestStore($pdfBytes, 'my-app/1.0.0');

Sessiz bir geri dönüş yoktur. ExperimentalC2paEmbedder, NEXTPDF_FEATURE_PREVIEW_C2PA_DRAFT tam olarak "1" değilken oluşturulursa, yapıcı, iletisinde bayrağı, env değişkenini ve sabitlenmiş taslak SHA/tarihini adlandıran bir LogicException fırlatır. Bir çağıran, yalnızca bir Pro lisansı tutarak yanlışlıkla taslak biçimli baytları bir üretim PDF’ine serileştiremez.

Kararlı ayıklama yolu da hata durumunda kapalıdır, ama farklı biçimde: extract(), hiçbir Manifest Store yokken null döndürür (yaygın durum, ucuz ve istisnasız tutulur) ve bir Store varken ama ayrıştırıcının düşmana-karşı-sertleştirme değişmezlerini (derinlik, döngü, boyut, sayım) çiğnediğinde bir C2paException alt sınıfı — JumbfBombException, JumbfCycleDetectedException, JumbfDepthExceededException ya da MalformedJumbfException — fırlatır. Bunlar asla sessizce yutulmaz.

Aşağıdaki dil, politika gereği bu yüzey için kullanılmaz ve ondan türetilen hiçbir belgede, kullanıcı arayüzünde ya da pazarlamada görünmemelidir:

  • “C2PA uygun” ya da “C2PA uyumlu”.
  • “C2PA sertifikalı”.
  • Tamamlanmış, öne sürülen bir yetenek olarak “C2PA imzalı”.
  • “GA” / “genel kullanıma sunulmuş”.

Yüzeyin dürüstçe ne olduğu: bir C2PA Manifest Store’u ayrıştırabilen (extract) ve taşıyabilen (embed) kararlı bir dikiş, artı taslak biçimli manifest içeriğini sentezleyen varsayılan olarak kapalı bir deneysel gömücü ve kendi önizleme durumunu bildiren bir durum nesnesi. Ne olmadığı: onaylanmış, doğrulanabilir C2PA kimlik bilgilerinin bir üreticisi. Özellikle, deneysel gömücü, belirtimin sürüklenmeye en yatkın parçası olan COSE_Sign1 bölümünü — Claim Signature (c2cs) kutusunu — kasıtlı olarak atlar; böylece bayrak açıkken bile çıktı imzasız, taslak biçimli baytlardır. Çalışma grubu profili dondurulmuş değildir; sınır asıl meseledir.

Deneysel gömücünün yaydığı tel biçimi, c2pa-org/specifications’in bir taslak işlemesine sabitlenmiştir (SPEC_PIN_SHA = 4e2afed8…, tarihli 2026-04-26); çağıranların bekledikleri SHA’yı sabitleyebilmesi için herkese açık bir sabit olarak açığa çıkarılmıştır.

SimgeRol
C2paCapabilityStatusDürüst, makine-okunabilir durum değer nesnesi. current() env bayrağını canlı okur; generallyAvailable / conformanceClaimed her zaman false’tur; summary() hiçbir GA/uygunluk iddiası taşımaz.
ManifestStoreDeğişmez Manifest Store değer nesnesi. Kararlı dikiş türü; baytları her iki yönde taşır. İddia düzeyinde erişimci yok. Her zaman kullanılabilir.
C2paManifestEmbedderDondurulmuş, satıcıdan bağımsız SPI: embed() / extract(). İddia sentezi yok. extract(), bulunamadığında null döndürür. Her zaman kullanılabilir.
ExperimentalC2paEmbedderVarsayılan olarak kapalı sentez. buildManifestStore() bir taslak manifest bir araya getirir; env bayrağı tam olarak "1" değilse yapıcı LogicException fırlatır.
Feature::PREVIEW_C2PA_DRAFTKapsamlı katılımlı bayrak. ENV_PREVIEW_C2PA_DRAFT = NEXTPDF_FEATURE_PREVIEW_C2PA_DRAFT; isEnabled() katı === '1'’dir.
  • Varsayılan olarak kapalı, katı katılım. Sentez, NEXTPDF_FEATURE_PREVIEW_C2PA_DRAFT arkasındadır, katı biçimde === '1' olarak okunur. Başka her şey KAPALIdır; tek başına bir Pro lisansı onu etkinleştirmez.
  • Yapım sırasında hata durumunda kapalı. new ExperimentalC2paEmbedder(), bayrak kapalıyken LogicException fırlatır — asla sessiz bir işlemsizlik değil.
  • Çıktı imzasız ve geçicidir. Bayrak açıkken bile Claim Signature kutusu atlanır; baytları taslak biçimli olarak ele alın ve kararlı bir adaptör sevk edildiğinde yeniden gömün.
  • Sabit eskime denetimi. Sabitlenmiş taslak anlık görüntüsünün ne zaman eskidiğini saptamak için CI’da composer c2pa:draft-status (taze çıkış 0 / yumuşak uyarı 1 / katı başarısızlık 2) çalıştırın.
  • Uygunluk hükmü yok. Durum nesnesi, bir uygunluk sonucunu değil, önizleme durumunu bildirir. Herhangi bir uygunluk tartışması için dış bir doğrulayıcı ve dondurulmuş bir çalışma grubu profili ön koşul olurdu ve ikisi de varsayılmaz.
  • Dil disiplini. Çıktıyı “C2PA imzalı”, “uygun”, “uyumlu”, “sertifikalı” ya da “GA” olarak nitelemeyin. “Önizleme yeteneği durumu” kullanın.

Bir önizleme yüzeyi bir güvenlik denetimi değildir. Bir taslak Manifest Store’u taşımak ya da sentezlemek, bir onayı üretmek ya da doğrulamakla aynı şey değildir — ve deneysel gömücü Claim Signature kutusunu tümüyle atlar; bu nedenle çıktısı yapısı gereği imzasızdır. Üretimde köken güvencesi için bu önizlemeye güvenmeyin; bir kimlik bilgisinin geçerli olduğunu ya da bir dosyanın imzalı olduğunu öne sürmez.

Bu yüzey hiçbir uygunluk iddiasında bulunmaz. C2PA profili, dış bir çalışma grubu tarafından sürdürülür ve dondurulmuş değildir; bu nedenle NextPDF, uygunluk ya da sertifikasyon değil, bir önizleme yeteneği durumu ve bir taslak/çalışma grubu sınırı belirtir. Hiçbir standart metin olduğu gibi aktarılmaz.

Bu sayfa yalnızca dışarıdan gözlemlenebilir davranışı ve desteklenen genel API yüzeyini belgeler. Dahili ad alanı yolları, yardımcı sınıflar, mekanizma tabloları, runbook dosya adları ve bilet önekleri kapsam dışıdır.