PDFMove
ما SVG؟ لماذا تشبه PDF إلى هذا الحد، وأين يفترقان؟
دليل

ما SVG؟ لماذا تشبه PDF إلى هذا الحد، وأين يفترقان؟

6 دقيقة للقراءة

التحويل من PDF إلى SVG من أكثر التحويلات بين الصيغ «مباشرةً» — لأن الصيغتين في الحقيقة من عائلة واحدة. نفحص في هذا المقال جذورهما المشتركة، والنقاط التي يتطابقان فيها تماماً، وأين يفترقان.

السلف المشترك: نموذج عرض PostScript

تستخدم الصيغتان نموذج عرض متفرّعاً من لغة وصف الصفحات PostScript التي طوّرتها Adobe في الثمانينيات. والأفكار الأساسية لهذا النموذج:

مفهوم المسار (path). فالأشكال مؤلفة من مسارات معرَّفة بقطع خطوط مستقيمة ومنحنيات بيزييه. وقد يكون المسار مفتوحاً أو مغلقاً؛ ويمكن تعبئته أو رسم حدّه أو استخدامه منطقةَ اقتصاص.

نموذج الدهّان (painter's model). فتُطبَّق الرسوم بالترتيب ويأتي اللاحق فوق السابق. كوضع الطلاء على لوحة.

حالة الرسوميات (graphics state). فتُحفَظ إعدادات مثل اللون وسماكة الخط ومصفوفة التحويل في مكدس حالات؛ ويمكن حفظها واستعادتها.

مصفوفات التحويل. فيُعبَّر عن التحجيم والإزاحة والدوران والقص بمصفوفات تحويل أفينية من ستة عناصر.

وبفضل هذا الاشتراك تجد معظم أوامر الرسم في PDF مقابلاً مباشراً في SVG:

| أمر PDF | مقابله في SVG | |---|---| | m (moveto) | M (بيانات المسار) | | l (lineto) | L | | c (curveto) | C (بيزييه تكعيبي) | | re (rectangle) | <rect> أو مسار | | f (fill) | الخاصية fill | | S (stroke) | الخاصية stroke | | W n (clip) | <clipPath> | | cm (تحويل) | الخاصية transform | | q/Q (حفظ/استعادة الحالة) | التجميع بـ <g> |

وعمل المحوّل في جوهره إجراء هذا الإسناد. ولذلك فالتحويل من PDF إلى SVG أوثق بكثير من التحويل من PDF إلى Word مثلاً؛ إذ تلزم في الثاني تخمينات بنيوية بينما هنا ترجمة مباشرة في الغالب.

الافتراق الأول: نظام الإحداثيات

PDF آتٍ من عرف الطباعة. فنقطة الأصل في الزاوية السفلية اليسرى للصفحة والمحور y يتزايد إلى أعلى. وهذا مطابق للنظام الديكارتي في دروس الرياضيات وطبيعي للتفكير في مقاسات الورق.

وSVG آتية من عرف الشاشة. فنقطة الأصل في الزاوية العلوية اليسرى وy يتزايد إلى أسفل. وهذا النهج المعياري في رسوميات الحاسوب.

وتحل المحوّلات ذلك بمصفوفة تحويل: فتقلب المحتوى كله على المحور y وتزيحه بمقدار ارتفاع الصفحة. ولا تلاحظ ذلك بوصفك مستخدماً لكن حين تفتح ملف SVG كنص قد ترى في العنصر الجذر تحويلاً مشابهاً لهذا:

transform="matrix(1,0,0,-1,0,842)"

ومعناه «اقلب المحور y وأزح 842 وحدة إلى أسفل» — و842 هو ارتفاع صفحة A4 بوحدة النقطة.

الافتراق الثاني: الوحدات

يستخدم PDF وحدة النقطة: والنقطة الواحدة = 1/72 بوصة. وصفحة A4 هي 595 × 842 نقطة. وهذه الوحدة معيارية في عالم الطباعة.

أما SVG فتعرّف وحدات المستخدم بالخاصية viewBox وهي غير مرتبطة بمقياس فيزيائي. ويمكن تحديد وحدات مثل البكسل والمليمتر والبوصة بالخاصيتين width وheight لكن ذلك ليس إلزامياً.

وتُؤخَذ قيم النقاط في PDF عادةً في التحويل كوحدات مستخدم في SVG مباشرة. والنتيجة صون نسب الصفحة لكن قد تصير معلومات المقاس الفيزيائي ملتبسة. فإن كنت تُعدّ ملف SVG سيذهب إلى الطباعة فينبغي تحديد قيمتَي width وheight صراحةً بالمليمتر.

الافتراق الثالث: الخطوط

وهذا أهم فرق عملي بين الصيغتين.

PDF يضمّن الخطوط. فيستطيع ملف PDF أن يحمل في داخله بيانات رسم الخطوط التي يستخدمها (ويفعل ذلك عادةً). وهذا يضمن ظهور الملف على الصورة نفسها تماماً في كل مكان — وهو سبب وجود الصيغة.

وSVG لا تضمّن عادةً. فملف SVG القياسي يقول font-family="Arial" ويتوقع وجود ذلك الخط في نظام القارئ. فإن لم يوجد تراجع المتصفح إلى خط مشابه.

والنتيجة: حين تنقل النص في PDF إلى SVG كنص يوجد احتمال ألا يكون الخط الأصلي موجوداً لدى القارئ. فتتغير عروض الحروف، وتفيض الأسطر أو تقصر، وتختل المحاذاة. وهذا شبه مؤكد في المستندات التي استُخدمت فيها خطوط مؤسسية أو تجارية.

وثمة ثلاثة حلول:

1. تحويل النص إلى منحنيات. فيصير كل حرف عنصر <path>. والمظهر مضمون لكن النص لم يعد نصاً — فلا يمكن تحديده ولا البحث فيه، ولا تستطيع قارئات الشاشة قراءته، ويكبر الملف بوضوح.

2. تضمين الخط. فتستطيع وضع بيانات الخط بترميز base64 داخل SVG عبر @font-face في CSS. فيُصان المظهر وإتاحة الوصول معاً لكن يكبر الملف وقد لا يسمح ترخيص الخط بذلك.

3. التراجع إلى خط آمن للويب. فإن كان الخط المستخدم شائعاً (Arial، وTimes New Roman) كانت المخاطرة منخفضة.

وعملياً تُفضَّل المنحنيات في أعمال الشعارات والرسوم، والتضمين أو النص في المحتوى كثيف النص.

الافتراق الرابع: فضاء الألوان

PDF يدعم CMYK أصلاً. فلأنه مصمم للطباعة يمكن تعريف الألوان بمكوّنات السماوي والأرجواني والأصفر والأسود. كما يمكن تعريف الألوان الموضعية (كألوان Pantone وهي أحبار منفصلة) وملفات ألوان ICC.

وSVG قائمة على RGB. ولا وجود لمفهوم CMYK. فتكتب fill="#RRGGBB" أو fill="rgb(r,g,b)".

وتُحوَّل قيم CMYK إلى RGB في التحويل وهو تحويل مع فقد. فمدى الألوان (gamut) في الفضاءين مختلف؛ ولا توجد مقابلات RGB دقيقة لبعض ألوان CMYK. وتظهر أوضح الفروق في درجات الأحمر الداكن والكحلي والبرتقالي والأسود الغني.

فإن لزم تطابق الألوان المؤسسية تماماً وجب تصحيح قيم الألوان في SVG يدوياً بعد التحويل بقيم RGB الواردة في دليل علامتك التجارية.

الافتراق الخامس: الشفافية والمؤثرات

نموذج الشفافية في PDF متطور إلى حد بعيد: شفافية ألفا، وأنماط المزج (الضرب، والشاشة، والتراكب...)، والأقنعة الناعمة (soft mask)، ومجموعات الشفافية.

ولـ SVG دعم للشفافية أيضاً (opacity، وfill-opacity، و<mask>، و<filter>) لكن النموذجين لا يتطابقان تماماً. فبعض أنماط المزج في PDF لا مقابل مباشر لها في SVG، وبعض بنى القناع الناعم تُعالَج معالجة مختلفة.

والنتيجة: قد تنشأ فروق بصرية بعد التحويل في ملفات التصميم التي تحوي مؤثرات شفافية متقدمة. ولا تنشأ مشكلة في شفافية ألفا البسيطة.

الافتراق السادس: البنية والغرض

PDF متعدد الصفحات وهو صيغة مستندات. فشجرة الصفحات، والإشارات المرجعية، وحقول النماذج، والتعليقات، والبيانات الوصفية، والتوقيع الرقمي — كلها تنتمي إلى مفهوم المستند.

وSVG «أحادية الصفحة» وهي صيغة رسوم. فلا مفهوم لتعدد الصفحات فيها. ولا توجد خصائص مستندات مثل الإشارات المرجعية وحقول النماذج والتعليقات.

وتضيع هذه كلها في التحويل:

| خاصية PDF | في SVG | |---|---| | بنية الصفحات | كل صفحة ملف منفصل | | الإشارات المرجعية | تضيع | | حقول النماذج | يبقى مظهرها وتذهب وظيفتها | | التعليقات | تضيع عادةً | | الروابط التشعبية | تنقلها بعض المحوّلات كـ <a> | | البيانات الوصفية | تضيع | | الطبقات (OCG) | تُسطَّح عادةً | | التوقيع الرقمي | يضيع |

في المقابل لـ SVG قدرات غير موجودة في PDF: التنسيق بـ CSS، والتفاعل بجافاسكربت، والحركة بـ SMIL أو CSS، والوصول البرمجي عبر DOM.

لماذا لا تطلب المطابع SVG

لثلاثة نواقص:

لا CMYK. فآلة الطباعة تعمل بـ CMYK؛ والملف بنظام RGB يخلق التباساً في إدارة الألوان.

لا هامش نزف ولا علامات قص. فيوجد في PDF صندوقا BleedBox وTrimBox؛ ولا وجود لمثل هذا المفهوم في SVG.

لا إدارة لملفات الألوان. فلا يمكن تضمين ملفات ICC.

ولذلك تطلب المطابع PDF، وخصوصاً الملفات الفرعية PDF/X. فـ SVG مصممة للويب والشاشة، وPDF للطباعة ومشاركة المستندات.

الخلاصة

PDF وSVG صيغتان متجهيتان متفرّعتان من نموذج عرض PostScript نفسه وتتطابق أوامر الرسم فيهما إلى حد بعيد — وهذا يفسّر لماذا التحويل بهذه الوثوقية. أما نقاط افتراقهما فتولّد نتائج عملية: نظاما الإحداثيات معكوسان (ويعوّض المحوّل ذلك)، وPDF يضمّن الخطوط وSVG لا تضمّن عادةً (وهو مصدر قرار النص أم المنحنيات)، وPDF يدعم CMYK وSVG قائمة على RGB (فينشأ انزياح لوني)، وPDF صيغة مستندات بينما SVG صيغة رسوم أحادية الصفحة (فتضيع الإشارات المرجعية والنماذج وبنية تعدد الصفحات). واختيار الصيغة الصحيحة متوقف على وجهة المخرجات: SVG للويب والتصميم، وPDF للطباعة ومشاركة المستندات.

الأسئلة الشائعة

هل يستخدم PDF وSVG نموذج الرسم نفسه؟

نعم إلى حد بعيد. فكلاهما قائم على نموذج عرض متفرّع من PostScript: إذ تُعرَّف المسارات (path) بخطوط مستقيمة ومنحنيات بيزييه، والتعبئة والحدّ عمليتان منفصلتان، ومسارات الاقتصاص تحدّ المنطقة. وهذا الاشتراك يفسّر لماذا يمكن إجراء التحويل من PDF إلى SVG بهذه المباشرة — إذ تجد معظم الأوامر مقابلاً حرفياً.

لماذا نظاما الإحداثيات في الصيغتين معكوسان؟

لأن PDF آتٍ من عرف الطباعة فيضع نقطة الأصل في الزاوية السفلية اليسرى للصفحة ويتزايد المحور y إلى أعلى — كالنظام الديكارتي في دروس الرياضيات. أما SVG فآتية من عرف الشاشة فتضع نقطة الأصل في الزاوية العلوية اليسرى ويتزايد y إلى أسفل. وتعوّض المحوّلات هذا الفرق بمصفوفة تحويل، ولذلك لا تلاحظه بوصفك مستخدماً.

هل يمكن استخدام خط مضمّن في SVG؟

نعم، بطريقتين: الإشارة إلى ملف خط خارجي بقاعدة ‎@font-face‎ في CSS، أو تضمين الخط داخل SVG بترميز base64. والثانية تجعل الملف مستقلاً تماماً لكنها تزيد الحجم زيادة جادة — فقد تشغل عائلة خط بضع مئات الكيلوبايتات. كما أن تراخيص الخطوط لا تسمح بالتضمين دائماً.

لماذا لا تُفضَّل SVG في أعمال المطابع؟

لثلاثة أسباب: SVG تعمل بطبيعتها في فضاء ألوان RGB ولا دعم فيها لـ CMYK، ومفاهيم ما قبل الطباعة مثل هامش النزف (bleed) وعلامات القص غير معرَّفة فيها، ولا توجد إدارة لملفات الألوان (ICC). والمطابع تشترط الثلاثة. وPDF، وخصوصاً الملفات الفرعية PDF/X، مصمم لهذه الحاجات.

جرّب ذلك الآن باستخدام PDF → SVG.

جرّب PDF → SVG