مقارنات

gPdf مقابل jsPDF: إنشاء PDF داخل المتصفح أم عبر Edge API

مقارنة مباشرة: jsPDF شائع لملفات PDF السريعة داخل المتصفح، لكن خطوط CJK ودقة الباركود وذاكرة الهاتف والامتثال تغيّر حدود المعمارية.

خلاصة سريعة

jsPDF خيار عملي لملفات PDF الخفيفة داخل المتصفح، والنماذج الأولية، والإيصالات البسيطة، والتصدير دون اتصال. تظهر المقايضة عندما تحتاج مستندات الإنتاج إلى نصوص CJK، أو باركود صالح للمسح، أو ثبات على الهاتف، أو مخرجات امتثال. gPdf ينقل إدارة الخطوط والباركود والتخطيط وإنشاء PDF إلى Edge API مضبوط، بحيث يرسل المتصفح البيانات ويتلقى PDF جاهزا.

مقارنة جنبًا إلى جنب

المعيار gPdf jsPDF الأفضل
مكان تنفيذ التوليد
قيمة jsPDF أنه يعمل داخل العميل؛ الخاصية نفسها تنقل ضغط CPU والذاكرة إلى كل جهاز مستخدم.
Cloudflare Workers V8 isolates على الحافة تبويب المتصفح لدى المستخدم gPdf
التعامل مع خطوط CJK
خطوط PDF القياسية في jsPDF لا تغطي UTF-8/CJK؛ لذلك تحتاج الفرق إلى تحميل أو تضمين بيانات TTF مناسبة.
بدائل خطوط مدمجة للصينية المبسطة واليابانية والكورية يتطلب خطا مخصصا يحتوي على الحروف المطلوبة gPdf
حجم واجهة المستخدم مع CJK لا توجد أصول خطوط CJK داخل حزمة الويب غالبا ملفات خطوط بعدة MB أو وحدات base64 مولدة gPdf
نموذج توليد الباركود عنصر `barcode` أصلي لتنسيقات 1D و2D غالبا مكتبة باركود منفصلة أو مسار SVG/canvas/صورة gPdf
دقة الباركود في الطباعة
في ملصقات الشحن والمستودعات والتذاكر، الماسحات تهتم بالهندسة المطبوعة والهوامش الهادئة وحجم الوحدة، لا بالمظهر على الشاشة فقط.
أشرطة ووحدات متجهية داخل PDF تعتمد على طريقة تحويل باركود المتصفح وتحجيمه داخل PDF gPdf
الثبات على متصفحات الهاتف يتم نقل عمل التوليد خارج التبويب إنشاء PDF والخطوط والصور والباركود كلها تستهلك ذاكرة العميل gPdf
الدعم دون اتصال يتطلب اتصالا بالـ API يمكن أن يعمل بالكامل دون اتصال داخل PWA أو تطبيق محلي jsPDF
PDF/A والفوترة الإلكترونية ملفات PDF/A ونقطة Factur-X/ZUGFeRD ليس ملائما عادة للأرشفة أو حزم الفواتير الإلكترونية الهجينة gPdf
السعر المعلن باقة Basic بسعر 5 دولارات/شهر تشمل 100,000 صفحة؛ يبدأ التجاوز من 0.00005 دولار لكل صفحة مكتبة مفتوحة المصدر؛ لا توجد فاتورة مورّد للمكتبة نفسها jsPDF
تكلفة الملكية في الإنتاج الـ API يتحمل الخطوط والباركود وبيئة الإخراج والترقيات تطبيق الويب لديك يتحمل تغليف الخطوط وتحويل الباركود وذاكرة الهاتف واختبارات المتصفحات gPdf
أفضل حالة استخدام افتراضية مستندات إنتاج منظمة: ملصقات، فواتير، إيصالات، تذاكر، كشوف تصدير صغير من المتصفح، نماذج أولية، مستندات دون اتصال، وملفات PDF لاتينية بسيطة متعادل

متى تختار أيًّا منهما

اختر gPdf عندما
  • تحتوي مستنداتك على الصينية أو اليابانية أو الكورية ولا تريد شحن ملفات خطوط كبيرة إلى كل متصفح.
  • تولد ملصقات أو تذاكر حرجة للمسح باستخدام Code 128 أو GS1-128 أو QR أو DataMatrix أو PDF417 أو غيرها.
  • مستخدموك كثيرا على متصفحات الهاتف، ولا تريد أن ينافس إنشاء PDF الصفحة على الذاكرة.
  • تحتاج PDF/A أو Factur-X أو ZUGFeRD أو محرك توليد مضبوطا لمخرجات حساسة للتدقيق.
  • يجب أن يكون مسار PDF نفسه قابلا للاستدعاء من الواجهة والخلفية والمهام والتكاملات.
اختر jsPDF عندما
  • تحتاج تصديرا كاملا دون اتصال من المتصفح أو PWA دون أي استدعاء خادم.
  • ملف PDF صغير، لاتيني فقط، ويولده مستخدم واحد من حين لآخر.
  • أنت في مرحلة prototype وتريد أسرع طريقة لرسم النصوص والخطوط والصور في JavaScript.
  • لا يجوز أن تغادر البيانات جهاز المستخدم إطلاقا، حتى لطلب توليد قصير العمر.
  • تقبل امتلاك مسار الخطوط وترميز الباركود والتحجيم وحالات ذاكرة المتصفح بنفسك.
القدرات

gPdf هي API لتحويل JSON إلى PDF على Edge للفواتير والمستندات وملصقات الشحن والباركود وPDF/A والفواتير الإلكترونية عالية الحجم. تصيير PDF بفئة الميلي ثانية على نطاق edge عالمي — محسّن لإنشاء مستندات صناعية يمكن التنبؤ بها. تسعير بمستوى البنية التحتية، منخفض بما يكفي ليستبدل بناء وتشغيل بنية PDF التحتية الخاصة بك.

القدرات

jsPDF ممتاز للتصدير الخفيف داخل المتصفح

انتشار jsPDF مفهوم لأنه يحل مشكلة منتج حقيقية: إنشاء PDF داخل المتصفح دون تشغيل خدمة خلفية. يستطيع المطور رسم نصوص وخطوط وصور وجداول بسيطة، ثم بدء التنزيل من الصفحة نفسها. للنماذج الأولية، وشاشات الإدارة الصغيرة، والإيصالات المحلية، وPWAs التي يجب أن تعمل دون اتصال، هذا اختيار مناسب.

السؤال المنتجى هو أين يصبح حد المتصفح غير مناسب. عندما يتحول PDF إلى مستند عمل يمسحه العملاء، أو يؤرشفونه، أو يرسلونه بالبريد، أو يقدمونه لنظام آخر، لم يعد العمل مجرد “رسم ملف”. يصبح إدارة خطوط، ودقة باركود، وثباتا على الهاتف، ومخرجا حتميا، وأحيانا PDF/A أو حزمة فاتورة إلكترونية.

نفس مخرج PDF، لكن حد المنتج مختلف

مع jsPDF، تطبيق الواجهة هو محرك التوليد. كل تبويب متصفح عليه حمل المكتبة وأي خطوط مخصصة وصور وسيطة ومخرج الباركود وبايتات ملف PDF النهائي. هذا يبقي فاتورة المكتبة صفرا، لكنه ينقل مسؤولية الإنتاج إلى جهاز كل مستخدم.

مع gPdf، يرسل المتصفح أو الخلفية طلب DocumentRequest أو template_id + data. gPdf يمتلك بيئة التوليد والخطوط المدمجة وهندسة الباركود وإنشاء PDF الثنائي عند الحافة. يبقى التطبيق مسؤولا عن البيانات ومنطق القالب، لا عن محرك PDF.

ملاءمة المنتج: تصدير دون اتصال أم مستندات تشغيلية

اختر jsPDF عندما يكون PDF ميزة راحة محلية: زر تصدير صغير، إيصال لاتيني بسيط، لقطة لوحة معلومات، أو PWA يجب أن يواصل العمل دون شبكة.

اختر gPdf عندما يكون PDF جزءا من سير تشغيل: ملصقات شحن، بطاقات مستودع، فواتير، تذاكر، كشوف، نماذج جمركية، وإيصالات تجارة عابرة للحدود. هذه المستندات تحتاج المخرج نفسه عبر الأجهزة، لا أفضل ما يستطيع التبويب الحالي تجميعه بأمان.

نموذج التكلفة: مكتبة مجانية أم سطح إنتاج تتحمله أنت

ميزة jsPDF السعرية واضحة: المكتبة نفسها مفتوحة المصدر، وCPU المتصفح لا يظهر كبند في فاتورة السحابة. لميزة داخلية صغيرة، قد يكون هذا أرخص مسار.

تكلفة الإنتاج تظهر حول المكتبة:

  • ملفات خطوط تدعم CJK أو وحدات خطوط base64 مولدة.
  • مكتبات ترميز وتحويل باركود.
  • أخطاء الذاكرة والتنزيل الخاصة بكل متصفح.
  • QA للطباعة على الماسحات والطابعات الحرارية.
  • اختبارات انحدار عبر سطح المكتب وiOS Safari وAndroid WebView والمتصفحات المضمنة.

gPdf يحول ذلك إلى فاتورة استخدام. تبدأ باقة Basic العامة من 5 دولارات/شهر مقابل 100,000 صفحة، ويبدأ التجاوز القياسي من 0.00005 دولار لكل صفحة. هذه تكلفة مورّد، لكنها تزيل الحاجة إلى جعل كل حزمة واجهة وكل جهاز مستخدم يتصرف كخدمة PDF إنتاجية.

تكلفة CJK ليست حجم الملف فقط

أول حد قاس هو نص CJK: الصينية واليابانية والكورية.

خطوط PDF القياسية المدمجة في jsPDF مفيدة للمخرجات اللاتينية البسيطة، لكنها لا تغطي كل Unicode. عندما يحتوي المستند على CJK، يحتاج التطبيق إلى خط يحتوي فعلا على تلك الحروف. عمليا، تنتهي تطبيقات المتصفح غالبا بتضمين TTF، أو تحويله إلى وحدة JavaScript base64، أو جلب بيانات الخط قبل إنشاء PDF.

تدفع هذه التكلفة مرتين: مرة كحزمة واجهة أكبر، ومرة أخرى كذاكرة متصفح أثناء إنشاء PDF. على الهاتف، قد يحتفظ التبويب نفسه بتطبيق الويب والخط ومخازن الباركود والصور وبايتات ملف PDF النهائي في الوقت نفسه.

gPdf يبقي هذا العمل في الخادم. المتصفح يرسل JSON منظما؛ ومحرك التوليد يختار من خطوط مدمجة تغطي Latin وGreek وCyrillic وCJK وArabic وDevanagari وBengali وThai وmonospace. طلب طلبية بحجم 2 KB لا يحتاج أن يتحول إلى مسار تسليم خط بحجم 12 MB.

تكلفة الباركود: الترميز سهل، وثبات الطباعة أصعب

في اللوجستيات والتجارة الإلكترونية والتصنيع والرعاية الصحية والتذاكر والتجزئة، قد يكون الباركود أهم من النص المرئي. الإنسان يقرأ رقم الطلب؛ التشغيل يقرأ Code 128 أو GS1-128 أو QR أو DataMatrix أو PDF417.

مع jsPDF، توليد الباركود عادة قرار منتج منفصل. تجمع الفرق jsPDF مع encoder آخر، ترسم الباركود كـ SVG أو canvas أو صورة، ثم تضع النتيجة داخل PDF. هذا يعمل لرمز QR على كوبون أو لإثبات مفهوم.

يصبح الأمر هشا عندما يكون الباركود المطبوع جزءا من التشغيل:

  • قد يتم rasterize لباركود canvas بدقة خاطئة.
  • قد يؤدي تحجيم الصورة إلى تشويش الأشرطة أو الوحدات أو الهوامش الهادئة.
  • قد يغير المتصفح أو CSS transform أو مسار التصدير الحجم الفيزيائي النهائي.
  • قد تحتاج صيغ باركود مختلفة إلى مكتبات أو مسارات تحويل مختلفة.
  • طابعات 203 DPI الحرارية تكشف أخطاء القياس الصغيرة بسرعة.

gPdf يعامل الباركود كعنصر مستند. يحدد الطلب type: "barcode" وformat والمحتوى والحجم الفيزيائي بالمليمتر. يصدر محرك التوليد هندسة باركود متجهية داخل PDF لصيغ 1D و2D المدعومة، بحيث تبقى النصوص والأشكال والجداول والصور والباركود في نظام إحداثيات واحد.

Studio وتكرار القوالب

jsPDF مساره code-first. تغيير التخطيط يعني عادة تعديل أوامر الرسم والمواضع وتسجيل الخطوط وتحويل الصور ووضع الباركود في JavaScript.

gPdf يدعم سير API-first نفسه، لكنه يضيف gPdf Studio كمصمم بصري مجاني لتخطيط PDF. تستطيع الفرق إضافة وسحب النصوص والصور والجداول والأشكال والرؤوس والتذييلات والباركود، ثم ربط التصميم بتوليد template_id + data. هذا مهم عندما يتغير شكل الملصق أو الفاتورة أو الإيصال كثيرا، ويحتاج غير المتخصصين في PDF إلى المشاركة في التخطيط.

متصفحات الهاتف ليست المكان الصحيح لعمل PDF ثقيل

يبدو إنشاء PDF في جهة العميل رخيصا لأن فاتورة الخادم صفر. التكلفة تنتقل إلى جهاز المستخدم.

على سطح المكتب قد يكون ذلك مقبولا. على متصفحات الهاتف، يستطيع مستند إنتاجي أن يضغط التبويب بقوة: بيانات خطوط CJK، وصور base64، ومخازن canvas، وصور باركود، وبايتات PDF مولد، والتطبيق نفسه، كلها تتنافس على الذاكرة في الوقت نفسه. iOS Safari وأجهزة Android منخفضة الذاكرة أقل تسامحا من حاسوب المطور.

نقل التوليد إلى gPdf يغير شكل المشكلة. يبني المتصفح طلب JSON صغيرا، ينتظر استجابة ثنائية، وينزل PDF جاهزا. لم يعد تبويب المستخدم مضطرا أن يكون مدير خطوط ومحرك باركود ومحرك تخطيط وكاتب PDF ثنائي.

متى يظل jsPDF هو الاختيار الصحيح

توجد أسباب قوية للإبقاء على jsPDF.

إذا كان على المستخدم التصدير وهو دون اتصال، فـ jsPDF أنسب. إذا كانت البيانات لا يجوز أن تغادر الجهاز إطلاقا، فالتوليد في المتصفح حد خصوصية أوضح. إذا كان المستند صغيرا ولاتينيا فقط ويستخدم نادرا، فقد لا تستحق إضافة API تشغيلية. للنماذج الأولية والأدوات الداخلية، jsPDF غالبا هو أسرع طريق.

يتغير القرار عندما يصبح المخرج جزءا من سير تشغيل: ملصق شحن يجب أن يمسح، أو فاتورة يجب أن تؤرشف، أو تذكرة يجب أن تتحقق، أو مستند طلب عابر للحدود يجب أن يعرض أسماء CJK بشكل صحيح. عندها تصبح عبارة “أنشئ PDF في المتصفح” أقل أهمية من “أنشئ PDF إنتاجيا موثوقا كل مرة”.

شكل الهجرة

الهجرة ليست “استبدال استدعاء دالة”. إنها انتقال من الرسم الإجرائي داخل المتصفح إلى طلب مستند منظم.

- // Before: browser-side drawing with jsPDF plus extra font/barcode setup.
- import { jsPDF } from "jspdf";
- import JsBarcode from "jsbarcode";
-
- const doc = new jsPDF({ unit: "mm", format: [100, 150] });
- // Load a CJK-capable TTF and register it before drawing CJK text.
- doc.addFileToVFS("NotoSansCJK-Regular.ttf", base64Font);
- doc.addFont("NotoSansCJK-Regular.ttf", "NotoSansCJK", "normal");
- doc.setFont("NotoSansCJK");
- doc.text("跨境订单 / Cross-border order", 6, 10);
-
- // Generate a barcode separately, then place it into the PDF.
- JsBarcode(canvas, "PDN0003507278", { format: "CODE128" });
- doc.addImage(canvas.toDataURL("image/png"), "PNG", 6, 72, 72, 20);
- doc.save("label.pdf");
+
+ // After: send one structured DocumentRequest to gPdf.
+ const res = await fetch("https://api.gpdf.com/api/v1/pdf/render", {
+   method: "POST",
+   headers: {
+     Authorization: `Bearer ${KEY}`,
+     "Content-Type": "application/json"
+   },
+   body: JSON.stringify({
+     settings: {
+       defaults: {
+         text: {
+           font_family: "NotoSans-Regular",
+           font_mode: "prefer",
+           font_size: 9,
+           color: "#111827"
+         }
+       }
+     },
+     pages: [{
+       width: 100,
+       height: 150,
+       elements: [
+         {
+           type: "text",
+           x: 6,
+           y: 8,
+           content: "跨境订单 / Cross-border order",
+           style: { width: 88, font_size: 12, font_weight: "bold" }
+         },
+         {
+           type: "barcode",
+           x: 6,
+           y: 70,
+           width: 72,
+           height: 18,
+           format: "code128",
+           content: "PDN0003507278",
+           barcode_text: { enabled: true, position: "bottom", offset: 1 }
+         },
+         {
+           type: "barcode",
+           x: 80,
+           y: 8,
+           width: 14,
+           height: 14,
+           format: "qrcode",
+           content: "https://track.example/PDN0003507278",
+           barcode_text: { enabled: false, position: "bottom" }
+         }
+       ]
+     }]
+   })
+ });
+ const pdf = await res.arrayBuffer();

التحول المهم هو الملكية. مع jsPDF، يمتلك تطبيق الويب مسار خطوط CJK، ومسار توليد الباركود، وملف ذاكرة المتصفح، وسلوك التصدير. مع gPdf، يمتلك تطبيقك البيانات والقالب؛ ويمتلك محرك التوليد عند الحافة ميكانيكا المستند.

سيناريوهات PDF ذات صلة

الفرق التي تقارن jsPDF وgPdf تبحث غالبا عن توليد PDF يدعم CJK وبدائل PDF داخل المتصفح، لكنها تصل أيضا إلى أسئلة عملية: هل يمكن استخدام JSON to PDF API بدل حزمة متصفح ثقيلة، هل يمكن توليد PDF الفاتورة وملصقات الشحن من بيانات منظمة، وهل يجب أن يكون باركود GS1 وPDF/A جزءا من API مضبوطة لا من كود الواجهة.

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

هل jsPDF مجاني؟ المكتبة نفسها مفتوحة المصدر. تكلفة الإنتاج هي العمل المحيط بها: خطوط CJK، ومكتبات الباركود، وQA للمتصفحات، وQA للطباعة، ودعم الأجهزة التي تنفد ذاكرتها.

هل يحل gPdf محل كل استخدامات jsPDF؟ لا. التصدير دون اتصال من المتصفح والمستندات المحلية بالكامل ما زالا المجال الطبيعي لـ jsPDF. gPdf مخصص لمستندات الإنتاج عندما يستحق محرك توليد مضبوط استدعاء API.

لماذا نذكر تكلفة الباركود بشكل منفصل؟ لأن باركودا يبدو صحيحا على الشاشة قد يفشل بعد التحجيم أو rasterization أو الطباعة الحرارية. المستندات التشغيلية تحتاج موثوقية ماسح، لا نمطا مرئيا فقط.

راجع أيضا