تخطَّ إلى المحتوى
getnextpdf.com

أنتج لونًا جاهزًا للطباعة: ⁨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⁩ وجهة، ولا يبرهنه بنعومة، ولا يضمن تطابقًا بصريًا. وفّر ألوانًا محدّدة سلفًا لشرطك.

Terminal window
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⁩ حبر مسمّى واحد — ‏⁨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⁩ العادية؛ أما حبر غير خطّيّ أو ملف تعريف مقيس فيحتاج تحويلًا مخصَّصًا، وهو خارج هذه الوصفة.

يستطيع ⁨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⁩ مخصَّص.