İçeriğe geç
getnextpdf.com

Baskıya hazır CMYK ve spot renk üretin

Ekran rengi RGB’dir. Baskı rengi değildir. Bir baskı makinesi veya bir prova RIP’i PDF’inizi tükettiğinde, proses mürekkeplerini (CMYK), ara sıra adlandırılmış bir mürekkebi (bir spot veya Separation rengi) ve varsayması gereken üretim koşulunun bir bildirimini ister. Bu tarif, NextPDF’in o kitle için size verdiği üç renk yayma yolunu gösterir:

  • Device CMYK dolgular ve konturlar — setFillColorCmyk() / setDrawColorCmyk().
  • Spot / Separation mürekkepleri bir tonda — önce registerSpotColor(), sonra setSpotFillColor() / setSpotDrawColor().
  • Belgenin tamamı için bir RGB çalışma/çıktı koşulu bildiren bir ICC çıktı amacıConfig::withOutputColorProfile(). Paketlenmiş profiller RGB çalışma alanlarıdır; bu, gerçek bir CMYK baskı / PDF/X baskı koşulu bildirmez.

Baştan bir kapsam notu: bu renk yaymadır. NextPDF, istediğiniz CMYK sayılarını, Separation alanını ve çıktı amacı bildirimini yazar. Bir renk yönetimi dönüşümü çalıştırmaz — RGB sanatınızı bir hedef CMYK gamutuna yeniden işlemez, yumuşak prova yapmaz ya da görsel bir eşleşme garanti etmez. Koşulunuz için zaten belirtilmiş renkleri sağlayın.

Terminal window
composer require nextpdf/core:^3

İsteğe bağlı bir uzantı gerekmez. Renk API’si 1.2.0’dan beri kararlıdır ve 8.1–8.4 backport matrisinde çalışır.

CMYK, ofset ve dijital proses baskının varsayılanıdır: dört kanal, camgöbeği / macenta / sarı / siyah (the “key”). Dolgu veya kontur rengini ayarlayın, ardından her zamanki gibi çizin.

<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
$doc = Document::createStandalone();
$doc->addPage();
// Components are percentages, 0–100 (cyan, magenta, yellow, key).
$doc->setFillColorCmyk(0, 95, 100, 0); // a process "red"
$doc->rect(20, 30, 60, 40, 'F');
$doc->setDrawColorCmyk(100, 0, 0, 0); // pure cyan rule
$doc->setLineWidth(1.0);
$doc->rect(20, 30, 60, 40, 'S');
$doc->setTextColorCmyk(0, 0, 0, 100); // rich-free 100% K text
$doc->setFont('helvetica', '', 12);
$doc->text(20, 85, 'Process CMYK');
$doc->save(getenv('NEXTPDF_COOKBOOK_OUTPUT') ?: __DIR__ . '/cmyk.pdf');

Her çağrı, içerik akışına bir DeviceCMYK renk operatörü yayar: stroke uygulamayan (dolgu/metin) renk için k ve kontur rengi için K, dört bileşen PDF’in dahili olarak kullandığı 0.0–1.0 aralığına ölçeklenmiş olarak. ISO 32000-2 §8.6.8 (Renk Operatörleri, Tablo 73), k ve K’yi DeviceCMYK renk ayarlama operatörleri olarak tanımlar; §8.6.4.4, DeviceCMYK renk alanının kendisini tanımlar.

Altta yatan değer nesnesi NextPDF\Graphics\Color’dır. Renkleri doğrudan oluşturursanız, Color::cmyk($c, $m, $y, $k) aynı 0–100 yüzdelerini alır ve her …Cmyk belge yönteminin çağırdığı şeydir.

Bir spot renk, baskı makinesinin proses mürekkeplerinden oluşturmak yerine kendi plakası olarak yüklediği tek bir adlandırılmış mürekkeptir — bir Pantone, bir HKS, bir vernik, bir die-cut “cut” plakası. PDF’de bu bir Separation renk alanıdır: bir renklendirici adı artı bir alternatif alan (burada DeviceCMYK) ve [0, 1] aralığındaki bir ton değerini alternatife eşleyen bir ton dönüşümü, böylece spot olmayan işleyiciler yine de bir yaklaşıklık gösterir.

Mürekkebi bir kez CMYK geri dönüşüyle kaydedin, ardından onu bir ton yüzdesinde dolgu veya kontur rengi olarak ayarlayın:

<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
$doc = Document::createStandalone();
$doc->addPage();
// Register the ink and its CMYK fallback (percentages, 0–100).
$doc->registerSpotColor('PANTONE 485 C', 0, 95, 100, 0);
// Full-strength fill.
$doc->setSpotFillColor('PANTONE 485 C'); // tint defaults to 100
$doc->rect(20, 30, 50, 30, 'F');
// 40% tint of the same ink.
$doc->setSpotFillColor('PANTONE 485 C', 40);
$doc->rect(80, 30, 50, 30, 'F');
// Same ink as a stroke at 75%.
$doc->setSpotDrawColor('PANTONE 485 C', 75);
$doc->setLineWidth(1.5);
$doc->line(20, 75, 130, 75);
$doc->save(getenv('NEXTPDF_COOKBOOK_OUTPUT') ?: __DIR__ . '/spot.pdf');

Onu seçmeden önce registerSpotColor() yapmalısınız; kaydedilmemiş bir ad bir PageLayoutException fırlatır. Kayıt, Separation kaynağını ve ton dönüşümünü yazar; setSpotFillColor() / setSpotDrawColor() ardından o kaydedilmiş Separation kaynağına karşı bir dolgu için /CS_<token> cs <tint> scn (ya da büyük harfli /CS_<token> CS <tint> SCN kontur biçimini) yayar. Burada iki ayrı ad iş başındadır ve motor bunları ayrı ayrı ele alır:

  • Kaynak ANAHTARI — içerik akışı operatörünün başvurduğu ve sayfanın /Resources /ColorSpace sözlüğünün altında anahtarlandığı /CS_… belirteci — her sözcük olmayan karakteri _ ile değiştirerek mürekkep adından türetilir, böylece 'PANTONE 485 C', /CS_PANTONE_485_C kaynağını seçer. (Sözcük anlamıyla bir _, bir tire ya da başka noktalama içeren mürekkep adları için, anahtarı çarpışmasız tutmak amacıyla kısa belirleyici bir sonek eklenir, böylece neredeyse aynı iki ad asla tek bir renk alanını paylaşmaz.)
  • Separation renklendirici adının kendisi — [/Separation /<name> …] renk alanı dizisinin içinde taşınan ad — olduğu gibi tutulur ve yazıcı tarafından bir PDF ad nesnesi olarak kodlanır; herhangi bir sınırlandırıcı veya yazdırılamayan bayt onaltılı kaçışla (#XX) işlenir. CS_… belirtecine düzleştirilmez; kaynak anahtarı ve renklendirici adı bağımsız olarak hesaplanır.

Geçirdiğiniz ton argümanı bir yüzdedir, 0 (kâğıt) ila 100 (tam mürekkep), ancak içerik akışına yazılan işlenen normalleştirilmiş 0.0–1.0 değeridir, böylece 40 tonu /CS_PANTONE_485_C cs 0.400000 scn yayar. ISO 32000-2 §8.6.6.4, Separation renk alanlarını ve ton dönüşümlerini kapsar.

Varsayılan ton dönüşümü, [0 0 0 0]’tan (ton 0’da kâğıt) kaydedilen CMYK geri dönüşüne (ton 1’de tam mürekkep) doğru doğrusal bir interpolasyondur. Bu, sıradan spot mürekkepler için doğrudur; doğrusal olmayan bir mürekkep ya da ölçülmüş bir profil, bu tarifin ötesinde olan özel bir dönüşüme ihtiyaç duyar.

PDF, renklerinin hazırlandığı renk koşuluna dair belge düzeyinde bir bildirim taşıyabilir — bir çıktı amacı: üretim koşulunu adlandıran bir sözlük, hedef ICC profili bir ICCBased akışı olarak gömülmüş halde. Gerçek bir baskı/PDF-X iş akışında bu bir CMYK baskı koşuludur (örneğin kaplamalı bir FOGRA veya GRACoL profili). Ancak NextPDF’in paketlediği profiller RGB çalışma alanlarıdır — bu nedenle Config::withOutputColorProfile()’in bildirdiği şey, bir CMYK hedefi değil, bir RGB görüntüleme / çalışma alanı çıktı koşuludur. Baskı çıktısı için ona güvenmeden önce örneğin altındaki nota bakın.

NextPDF bunu belge Config’i aracılığıyla sunar. Paketlenmiş çalışma alanı profillerinden birini seçin, yapılandırmayı oluşturun ve belgeyi ondan oluşturun:

<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Config;
use NextPDF\Core\Document;
use NextPDF\Core\OutputColorProfile;
// Declare an explicit, embedded output intent for the document.
$config = (new Config())
->withOutputColorProfile(OutputColorProfile::Srgb);
$doc = Document::createStandalone($config);
$doc->addPage();
$doc->setFillColorCmyk(0, 95, 100, 0);
$doc->rect(20, 30, 60, 40, 'F');
$doc->save(getenv('NEXTPDF_COOKBOOK_OUTPUT') ?: __DIR__ . '/with-intent.pdf');

OutputColorProfile, motorun bir profil paketlediği çalışma alanlarının bir enum’udur. Profil destekli tüm durumlar üç bileşenli RGB çalışma alanlarıdır; DeviceRGB varsayılan nöbetçidir ve hiçbir çıktı amacı yaymaz. Paketlenmiş bir CMYK hedef profili yoktur:

  • DeviceRGB — varsayılan. Hiçbir çıktı amacı yayılmaz: hiçbir PDF düzeyinde çıktı koşulu bildirilmez ve PDF/A işlem hattı (etkinse) /OutputIntents dizisi üzerindeki özel denetimi korur. Birini bildirmek istemediğinizde bunu kullanın. (Çıktı amacı olmayan PDF DeviceRGB içeriği aygıta bağımlıdır — bildirilmiş bir sRGB değildir.)
  • Srgb — standart koşul tanımlayıcısı sRGB IEC61966-2.1 ile birlikte paketlenmiş sRGB.icc’yi gömen bir çıktı amacı sözlüğü yayar.
  • DisplayP3, Rec2020, A98RGB, ProphotoRGB — geniş gamutlu RGB çalışma alanları, her biri özel bir (NextPDF wide-gamut …) koşul tanımlayıcısı altında paketlenmiş ICC profilini gömer.

DeviceRGB dışındaki herhangi bir durum, yazıcının gömülü ICCBased akışına (/N 3 bileşen sayısıyla) başvuran bir çıktı amacı sözlüğü yaymasını sağlar. ISO 32000-2 §14.11.5, çıktı amacı sözlüğünü tanımlar; §8.6.5.5, gömülü profili taşıyan ICCBased renk alanını tanımlar. Geçerli motorda bu sözlük, hangi paketlenmiş profili seçerseniz seçin PDF/X çıktı amacı alt türü /GTS_PDFX ile yazılır (PDF/A arşivleme yolu kendi /GTS_PDFA1 alt türünü kullanır ve ayrı olarak yayılır).

Önemli uyarı: paketlenmiş tüm profiller RGB olduğundan, bu belgenin RGB çalışma alanını ve görüntüleme amacını bildirir — bu bir CMYK hedef profili değildir ve hiçbir şeyi CMYK’ye dönüştürmez. Motor, withOutputColorProfile() aracılığıyla özel bir CMYK hedef ICC’si sağlamanıza izin vermez. Gerçek bir baskı/PDF-X CMYK çıktı amacı, kendi CMYK ICC profilinizi hedef olarak gömen bir iş akışı gerektirir; aynı /OutputIntents dizisine bağlanmış bir arşivleme çıktı amacı için bkz. PDF/A-4 çıktısı.

  • Device CMYK — bir proses baskı makinesine yönelik herhangi bir sanat için varsayılan. Aşağı akışta hiçbir RGB→CMYK tahmini olmaması için renklerinizi baştan CMYK’de belirtin.
  • Spot / Separation — tam bir mürekkebi yakalaması gereken marka renkleri, artı proses dışı plakalar (vernik, beyaz, metalik, die-cut, varak). Bir kez kaydedin, herhangi bir tonda boyayın.
  • Çıktı amacı — dosyanın RGB çalışma/çıktı koşulu hakkında kendini tanımlayıcı olmasını istediğinizde ya da bir tüketici (bir görüntüleyici, bir renk yönetimli RIP, bir doğrulayıcı) bildirilmiş bir çıktı koşulu beklediğinde ayarlayın. Paketlenmiş profiller yalnızca bir RGB çalışma/çıktı koşulu bildirir; gerçek bir CMYK baskı / PDF/X baskı koşulu bildirmezler.
  • CMYK bileşenleri yüzdedir (0–100), 0–1 değil. …Cmyk belge yöntemleri ve Color::cmyk(), her kanalı bir 0–100 yüzdesi olarak alır ve operatörü yazarken 100’e böler; içerik akışı işleneni normalleştirilmiş 0.0–1.0 değeridir. Tam mürekkep için 1.0 değil 100 geçirin (motor bunu %1 mürekkep olarak ele alır).
  • Bir spotu seçmeden önce kaydedin. Ad hiç kaydedilmediyse setSpotFillColor() / setSpotDrawColor() fırlatır. Adlar, büyük/küçük harf ve boşluklar dâhil tam olarak eşleştirilir.
  • Renk durumu kalıcıdır. Bir CMYK veya spot renk, onu değiştirene kadar yürürlükte kalır. İlgisiz bir bloktan önce sıfırlayın.
  • CMYK geri dönüşü bir yaklaşıklıktır. Separation ton dönüşümü, spot olmayan işleyicilerin bir şey gösterebilmesi için vardır; baskı çıktısı değildir. Gerçek mürekkep, adlandırılmış plakanın ürettiği şeydir.
  • Bir çıktı amacı bir bildirimdir, bir dönüşüm değil. OutputColorProfile::Srgb bildirmek renklerinizi sRGB’ye dönüştürmez; amaçlanan koşulu belirtir. Renk doğruluğu, aşağı akışta sizin sorumluluğunuzdadır.

Her renk seçimi tek bir içerik akışı operatörüdür; bir spot ayrıca kaydedilen mürekkep başına bir Separation kaynağı yazar. Gömülü bir çıktı amacı profili belge başına bir kez yazılır. Tüm yollar 2000 ms / 64 MB bütçesinin oldukça içinde kalır.

Bu tarif yalnızca kodunuzun belirttiği renkleri ve profili yayar. Güvenilmeyen hiçbir girdiyi ayrıştırmaz ve hiçbir ağ erişimi yapmaz. Renklendirici adları veya CMYK bileşenleri harici veriden geliyorsa, bunları doğrulayın: bileşenleri 0–100 aralığına sıkıştırın ve spot adlarındaki denetim karakterlerini reddedin (bir Separation adındaki bir NUL bayt motor tarafından reddedilir).

İfadeSpecClause
k ve K, DeviceCMYK stroke uygulamayan / kontur rengini ayarlayan renk operatörleridir.ISO 32000-2§8.6.8
DeviceCMYK, çıkarmalı dört bileşenli proses renk alanıdır.ISO 32000-2§8.6.4.4
Bir Separation renk alanı, tonu bir ton dönüşümü aracılığıyla bir alternatif alana eşlenen tek bir renklendirici adlandırır.ISO 32000-2§8.6.6.4
Bir ICCBased renk alanı, bir /N bileşen sayısına sahip bir ICC profil akışı gömer.ISO 32000-2§8.6.5.5
Bir çıktı amacı, hedef üretim koşulunu bildirir; GTS_PDFX, baskı alt türünü adlandırır.ISO 32000-2§14.11.5

Yeniden üretilebilirlik profili — yapısal. Renk yaymanın kendine ait entropisi yoktur, ancak kaydedilen her belge bir fragman /ID ve tarih atomları taşır ve gömülü bir ICC akışı yalnızca sabit bir paketlenmiş profil için baytça kararlıdır. Desteklenen iddia, qpdf normalleştirmesinden sonra yapısal eşitliktir. Bu tarif, NextPDF’in yapıyı nasıl ürettiğini tarif eder; genel bir ISO 32000-2 uyumluluğu ileri sürmez.

Uygulanabilir değil. Device CMYK, spot/Separation renk ve çıktı amacı bildirimi, hiçbir Premium kapısı olmayan Core yetenekleridir. Core, burada gösterilen paketlenmiş RGB çıktı amacı bildirimini destekler; özel CMYK baskı koşulu ICC iş akışları bu tarif tarafından ileri sürülmez.