أنتج لونًا جاهزًا للطباعة: CMYK والألوان النقطية / Separation
لمحة سريعة
قسم بعنوان «لمحة سريعة»لون الشاشة RGB. ولون الطباعة ليس كذلك. حين تستهلك مطبعة أو RIP تجريبيّ ملف PDF لديك، فإنه يريد أحبار المعالجة (CMYK)، وحبرًا مسمّى عرضيًا (لون spot أو Separation)، وإعلانًا عن شرط الإنتاج الذي ينبغي افتراضه. تُظهر هذه الوصفة مسارات إصدار اللون الثلاثة التي يمنحك إياها NextPDF لذلك الجمهور:
- تعبئات وطِلاءات CMYK الجهازي —
setFillColorCmyk()/setDrawColorCmyk(). - أحبار spot / Separation بتدرّج —
registerSpotColor()ثمsetSpotFillColor()/setSpotDrawColor(). - قصد إخراج ICC يُعلن شرط عمل/إخراج RGB للمستند كله —
Config::withOutputColorProfile(). ملفات التعريف المجمَّعة فضاءات عمل RGB؛ وهذا لا يُعلن شرط مطبعة CMYK حقيقيًا / شرط طباعة PDF/X.
ملاحظة نطاق في البداية: هذا إصدار لون. يكتب NextPDF أرقام CMYK، وفضاء Separation، وإعلان قصد الإخراج الذي تطلبه. وهو لا يجري تحويل إدارة لون — فلن يعيد عرض عملك الفنّي RGB في خانة CMYK وجهة، ولا يبرهنه بنعومة، ولا يضمن تطابقًا بصريًا. وفّر ألوانًا محدّدة سلفًا لشرطك.
التثبيت
قسم بعنوان «التثبيت»composer require nextpdf/core:^3لا يلزم امتداد اختياري. واجهة الألوان مستقرّة منذ 1.2.0 وتعمل على مصفوفة الإسناد الخلفي 8.1–8.4.
تعبئات وطِلاءات CMYK الجهازي
قسم بعنوان «تعبئات وطِلاءات CMYK الجهازي»CMYK هو الافتراضي للطباعة الإزاحية والرقمية بالمعالجة: أربع قنوات، سماويّ / أرجوانيّ / أصفر / أسود (“المفتاح”). اضبط لون التعبئة أو الطِلاء، ثم ارسم كالمعتاد.
<?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');يُصدر كل استدعاء مُعامِل لون DeviceCMYK في مجرى المحتوى: k للون غير الطِلاء
(التعبئة/النص) وK للون الطِلاء، مع تحجيم القنوات الأربع إلى المدى 0.0–1.0 الذي
يستخدمه PDF داخليًا. تعرّف ISO 32000-2 §8.6.8 (مُعامِلات اللون، الجدول 73) k وK
بوصفهما مُعامِلَي ضبط لون DeviceCMYK؛ وتعرّف §8.6.4.4 فضاء لون DeviceCMYK نفسه.
كائن القيمة الأساس هو NextPDF\Graphics\Color. وإذا بنيت الألوان مباشرةً، فإن
Color::cmyk($c, $m, $y, $k) يأخذ النسب المئوية 0–100 نفسها وهو ما تستدعيه كل طريقة
مستند …Cmyk.
أحبار spot / Separation بتدرّج
قسم بعنوان «أحبار spot / Separation بتدرّج»لون spot حبر مسمّى واحد — Pantone، أو HKS، أو ورنيش، أو لوح “قطع” للقطع بالقالب —
تحمّله المطبعة بوصفه لوحه الخاص بدلًا من بنائه من أحبار المعالجة. وهو في PDF فضاء لون
Separation: اسم مادّة لون زائد فضاء بديل (هنا DeviceCMYK) وتحويل تدرّج يربط قيمة
تدرّج في [0, 1] بالبديل، فيُظهر العارضون غير الـspot تقريبًا.
سجّل الحبر مرة بمرتجَع CMYK له، ثم اضبطه لونًا للتعبئة أو الطِلاء بنسبة تدرّج مئوية:
<?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');يجب أن تستدعي registerSpotColor() قبل أن تختاره؛ فاسم غير مسجَّل يرفع
PageLayoutException. يكتب التسجيل مورد Separation وتحويل التدرّج؛ ثم يُصدر
setSpotFillColor() / setSpotDrawColor() /CS_<token> cs <tint> scn للتعبئة (أو
صيغة الطِلاء العليا /CS_<token> CS <tint> SCN) مقابل مورد Separation المسجَّل ذاك.
هنا اسمان متمايزان، ويعالجهما المحرّك على حدة:
- إن مفتاح المورد — رمز
/CS_…الذي يشير إليه مُعامِل مجرى المحتوى والذي يُفهرَس تحته قاموس/Resources /ColorSpaceالخاص بالصفحة — مشتقّ من اسم الحبر باستبدال كل محرف غير لفظيّ بـ_، فيختار'PANTONE 485 C'المورد/CS_PANTONE_485_C. (لأسماء الأحبار التي تحتوي_حرفيًا أو شَرطة أو علامات ترقيم أخرى، يُلحَق لاحق حتميّ قصير لإبقاء المفتاح خاليًا من التصادم، فلا يشترك اسمان شبه متطابقين في فضاء لون واحد أبدًا.) - إن اسم مادّة لون Separation نفسه — الاسم المحمول داخل مصفوفة فضاء اللون
[/Separation /<name> …]— يُبقى كما هو ويُرمّزه الكاتب بوصفه كائن اسم PDF، مع تهريب سداسيّ (#XX) لأي محدِّد أو بايت غير قابل للطباعة. وهو لا يُسطَّح إلى الرمزCS_…؛ فمفتاح المورد واسم مادّة اللون يُحسبان مستقلَّين.
وسيط التدرّج الذي تمرّره نسبة مئوية، من 0 (الورق) إلى 100 (الحبر الكامل)، لكن
المُعامَل المكتوب في مجرى المحتوى هو القيمة المُنظَّمة 0.0–1.0، فتدرّج 40 يُصدر
/CS_PANTONE_485_C cs 0.400000 scn. تغطّي ISO 32000-2 §8.6.6.4 فضاءات لون Separation
وتحويل تدرّجها.
تحويل التدرّج الافتراضي تداخل خطّيّ من [0 0 0 0] (الورق عند تدرّج 0) إلى مرتجَع CMYK
المسجَّل (الحبر الكامل عند تدرّج 1). وهو صحيح لأحبار spot العادية؛ أما حبر غير خطّيّ أو
ملف تعريف مقيس فيحتاج تحويلًا مخصَّصًا، وهو خارج هذه الوصفة.
أعلِن قصد إخراج ICC
قسم بعنوان «أعلِن قصد إخراج ICC»يستطيع PDF حمل إعلان على مستوى المستند عن شرط اللون الذي أُعدّت له ألوانه — قصد
إخراج: قاموس يسمّي شرط الإنتاج، مع ملف تعريف ICC الوجهة مضمّنًا بوصفه مجرى ICCBased.
في سير عمل طباعة/PDF-X حقيقيّ يكون هذا شرط مطبعة CMYK (ملف تعريف FOGRA أو GRACoL
مطليّ، مثلًا). أما ملفات التعريف التي يجمّعها NextPDF فهي فضاءات عمل RGB — فما
يُعلنه Config::withOutputColorProfile() هو شرط إخراج عرض / فضاء عمل RGB، لا وجهة
CMYK. انظر الملاحظة أسفل المثال قبل الاعتماد عليه لإخراج المطبعة.
يكشف NextPDF عن هذا عبر Config المستند. اختر أحد ملفات تعريف فضاء العمل المجمَّعة،
وابنِ التهيئة، وأنشئ المستند منها:
<?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 تعداد لفضاءات العمل التي يجمّع المحرّك لها ملف تعريف. كل الحالات
المدعومة بملف تعريف فضاءات عمل RGB ثلاثية المكوّنات؛ وDeviceRGB هو الحارس الافتراضي
ولا يُصدر قصد إخراج. ولا يوجد ملف تعريف وجهة CMYK مجمَّع:
-
DeviceRGB— الافتراضي. لا يُصدر قصد إخراج: لا يُعلَن شرط إخراج على مستوى PDF، ويحتفظ خط أنابيب PDF/A (إن كان نشطًا) بالتحكّم الحصريّ في مصفوفة/OutputIntents. استخدم هذا حين لا تريد إعلان واحد. (محتوى PDF DeviceRGBبلا قصد إخراج معتمد على الجهاز — وليس sRGB معلَنًا.) -
Srgb— يُصدر قاموس قصد إخراج يضمّنsRGB.iccالمجمَّع، بمعرّف الشرط القياسيّsRGB IEC61966-2.1. -
DisplayP3وRec2020وA98RGBوProphotoRGB— فضاءات عمل RGB واسعة الخانة، يضمّن كلّ منها ملف تعريف ICC المجمَّع تحت معرّف شرط مخصَّص (NextPDF wide-gamut …).
أي حالة غير DeviceRGB تجعل الكاتب يُصدر قاموس قصد إخراج يشير إلى مجرى ICCBased
المضمّن (بعدّ مكوّناته /N 3). تعرّف ISO 32000-2 §14.11.5 قاموس قصد الإخراج؛ وتعرّف
§8.6.5.5 فضاء لون ICCBased الذي يحمل ملف التعريف المضمّن. وفي المحرّك الحاليّ يُكتب هذا
القاموس بنوع قصد إخراج PDF/X الفرعيّ /GTS_PDFX بصرف النظر عن ملف التعريف المجمَّع الذي
تختاره (يستخدم مسار PDF/A الأرشيفيّ نوعه الفرعيّ /GTS_PDFA1 الخاص ويُصدَر على حدة).
التحفّظ المهمّ: لأن كل ملفات التعريف المجمَّعة RGB، فإن هذا يُعلن فضاء عمل RGB
للمستند وقصد عرضه — وهو ليس ملف تعريف وجهة CMYK، ولا يحوّل شيئًا إلى CMYK. ولا
يدعك المحرّك توفّر ملف تعريف ICC وجهة CMYK مخصَّصًا عبر withOutputColorProfile().
يتطلّب قصد إخراج CMYK طباعة/PDF-X حقيقيّ سير عمل يضمّن ملف تعريف ICC CMYK خاصًّا بك
وجهةً؛ ولقصد إخراج أرشيفيّ مربوط في مصفوفة /OutputIntents نفسها، انظر
إخراج PDF/A-4.
متى تلجأ إلى كلٍّ منها
قسم بعنوان «متى تلجأ إلى كلٍّ منها»- CMYK الجهازي — الافتراضي لأي عمل فنّيّ متّجه إلى مطبعة معالجة. حدّد ألوانك في CMYK من البداية فلا يحدث تخمين RGB→CMYK في المراحل اللاحقة.
- spot / Separation — ألوان العلامة التجارية التي يجب أن تصيب حبرًا بالضبط، إضافةً إلى ألواح غير المعالجة (ورنيش، أبيض، معدنيّ، قطع بالقالب، رقائق). سجّل مرة، واطلِ بأي تدرّج.
- قصد الإخراج — اضبطه حين تريد أن يكون الملف واصفًا لنفسه بشأن شرط عمل/إخراج RGB له، أو حين يتوقّع مستهلك (عارض، أو RIP مُدار اللون، أو مدقّق) شرط إخراج معلَنًا. ملفات التعريف المجمَّعة تُعلن شرط عمل/إخراج RGB فقط؛ ولا تُعلن شرط مطبعة CMYK حقيقيًا / شرط طباعة PDF/X.
الحالات الحدّية والمزالق
قسم بعنوان «الحالات الحدّية والمزالق»- مكوّنات CMYK نسب مئوية (0–100)، لا 0–1. تأخذ طرائق المستند
…CmykوColor::cmyk()كل قناة بوصفها نسبة مئوية0–100وتقسمها على 100 عند كتابة المُعامِل؛ والمُعامَل في مجرى المحتوى هو القيمة المُنظَّمة0.0–1.0. مرّر100للحبر الكامل، لا1.0(الذي سيعامله المحرّك حبرًا بنسبة 1%). - سجّل قبل أن تختار spot. يرفع
setSpotFillColor()/setSpotDrawColor()استثناءً إذا لم يُسجَّل الاسم قطّ. وتُطابَق الأسماء بدقّة، بما في ذلك الحالة والمسافات. - تستمرّ حالة اللون. يبقى لون CMYK أو spot نافذًا حتى تغيّره. أعد الضبط قبل كتلة غير ذات صلة.
- مرتجَع CMYK تقريب. يوجد تحويل تدرّج Separation ليُظهر العارضون غير الـspot شيئًا؛ وهو ليس إخراج المطبعة. الحبر الحقيقيّ ما ينتجه اللوح المسمّى.
- قصد الإخراج إعلان، لا تحويل. إعلان
OutputColorProfile::Srgbلا يحوّل ألوانك إلى sRGB؛ بل يذكر الشرط المقصود. ودقّة اللون مسؤوليتك في المراحل السابقة.
الأداء
قسم بعنوان «الأداء»كل اختيار لون مُعامِل مجرى محتوى واحد؛ ويكتب spot أيضًا مورد Separation واحدًا لكل حبر مسجَّل. ويُكتب ملف تعريف قصد إخراج مضمّن مرة لكل مستند. وتبقى كل المسارات داخل ميزانية 2000 ms / 64 MB بمريح.
ملاحظات أمنية
قسم بعنوان «ملاحظات أمنية»تُصدر هذه الوصفة الألوان وملف التعريف اللذين تحدّدهما شيفرتك فقط. وهي لا تحلّل مدخلًا غير
موثوق ولا تُجري وصولًا شبكيًا. إذا أتت أسماء مادّة اللون أو مكوّنات CMYK من بيانات
خارجية، فتحقق منها: قيّد المكوّنات إلى 0–100 وارفض محارف التحكّم في أسماء spot (بايت
NUL في اسم Separation يرفضه المحرّك).
المطابقة
قسم بعنوان «المطابقة»| العبارة | المواصفة | البند |
|---|---|---|
k وK هما مُعامِلا اللون اللذان يضبطان لون DeviceCMYK غير الطِلاء / الطِلاء. | ISO 32000-2 | §8.6.8 |
| DeviceCMYK فضاء لون المعالجة رباعيّ المكوّنات الطرحيّ. | ISO 32000-2 | §8.6.4.4 |
| يسمّي فضاء لون Separation مادّة لون واحدة يربط تدرّجها بفضاء بديل عبر تحويل تدرّج. | ISO 32000-2 | §8.6.6.4 |
يضمّن فضاء لون ICCBased مجرى ملف تعريف ICC بعدّ مكوّنات /N. | ISO 32000-2 | §8.6.5.5 |
يُعلن قصد الإخراج شرط الإنتاج الهدف؛ وGTS_PDFX يسمّي النوع الفرعيّ للطباعة. | ISO 32000-2 | §14.11.5 |
ملف تعريف إعادة الإنتاج — بنيويّ. ليس لإصدار اللون عشوائيّته الخاصة، لكن كل مستند
محفوظ يحمل /ID المقطورة وذرّات تاريخ، ومجرى ICC المضمّن مستقرّ البايتات فقط لملف
تعريف مجمَّع ثابت. والادعاء المدعوم هو المساواة البنيوية بعد تطبيع qpdf. تصف هذه الوصفة
كيف ينتج NextPDF البنية؛ وهي لا تؤكد مطابقة ISO 32000-2 شاملة.
السياق التجاري
قسم بعنوان «السياق التجاري»غير منطبق. إن CMYK الجهازي ولون spot/Separation وإعلان قصد الإخراج قدرات Core بلا بوّابة Premium. يدعم Core إعلان قصد إخراج RGB المجمَّع المعروض هنا؛ ولا تدّعي هذه الوصفة سير عمل ICC لشرط طباعة CMYK مخصَّص.