محوّل Base64 إلى PDF

الصق Base64 من استجابة API أو رسالة بريد إلكتروني أو قاعدة بيانات وأعده إلى ملف PDF. اقرأه في العارض المضمّن، ثم احفظه كملف .pdf عادي.

تعمل بالكامل داخل متصفحك، ولا يُرفع أي شيء.

طريقة الاستخدام

  1. الصق سلسلة Base64 في حقل المدخلات، أو الصق data URI يبدأ بالبادئة data:application/pdf;base64, كما هو.
  2. تحقّق من أن الملف مكتشف على أنه PDF، واقرأه في العارض.
  3. نزّل ملف PDF لحفظه على جهازك.

نسخ Base64 من استجابة API

كثيرًا ما تعيد الخدمات التي تُنشئ الفواتير وملصقات الشحن والتقارير والعقود الموقّعة ملف PDF داخل JSON، مثل {"filename": "label.pdf", "data": "JVBERi0..."}. انسخ النص الموجود بين علامتي الاقتباس بعد اسم الحقل فقط، وانتبه إلى هذه التفاصيل:

  • الشرطات المائلة المهرّبة. تكتب بعض أدوات ترميز JSON، ومنها json_encode في PHP، كل / على شكل \/. وبما أن / حرف عادي في Base64، فاستبدل \/ بـ / قبل اللصق، أو حلّل JSON أولًا ثم انسخ القيمة.
  • علامات الاقتباس والفواصل. لا تنسخ علامات الاقتباس المحيطة بالقيمة ولا أي فاصلة بعدها.
  • فواصل الأسطر. المسافات وفواصل الأسطر الحقيقية داخل Base64، كالقيمة الملفوفة عند 76 حرفًا، لا تسبب مشكلة ولا داعي لحذفها. أما تسلسلات \n أو \r\n الحرفية في JSON الخام فأمر مختلف: فهي أحرف شرطة مائلة عكسية ويجب حذفها.

نسخ القيمة من العرض المحلَّل في أدوات المطوّر في متصفحك يجنّبك كل مشكلات التهريب هذه.

استخراج مرفق PDF من رسالة بريد إلكتروني

تُخزَّن مرفقات البريد الإلكتروني بترميز Base64 داخل الرسالة الخام. افتح مصدر الرسالة (الخيار «Show original» في Gmail، و«Message Source» في Thunderbird، و«Raw Source» في Apple Mail)، وابحث عن الجزء الذي تتضمن ترويساته Content-Type: application/pdf (أو application/octet-stream مع اسم ملف بامتداد .pdf) وContent-Transfer-Encoding: base64. انسخ الكتلة التي تبدأ بعد السطر الفارغ الذي يلي هذه الترويسات وتنتهي قبل السطر التالي الذي يبدأ بـ --، وهو حدّ MIME. والصقها هنا كما هي، فلا أثر لفواصل الأسطر.

عرض ملف PDF بترميز Base64 في تطبيق الويب الخاص بك

عندما تستقبل الواجهة الأمامية لتطبيقك ملف PDF بترميز Base64 وتحتاج إلى عرضه، يكون Blob URL أكثر موثوقية من data URI، الذي ترفض بعض المتصفحات فتحه في علامة تبويب جديدة:

const bytes = Uint8Array.from(atob(base64), c => c.charCodeAt(0));
const blob = new Blob([bytes], { type: 'application/pdf' });
const url = URL.createObjectURL(blob);
window.open(url); // أو استخدمه قيمةً للسمة src في عنصر <iframe>

استدعِ URL.revokeObjectURL(url) عندما لا تعود بحاجة إلى المستند لتحرير الذاكرة. ولاحظ أن atob لا تقبل إلا أبجدية Base64 القياسية، لذا حوّل المدخلات الآمنة لعناوين URL (- و_) أولًا.

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

لماذا لا يُكتشف Base64 الخاص بي على أنه PDF؟
يبدأ ملف PDF بترميز Base64 بـ JVBERi0، وهو ترميز %PDF-. فإذا بدأت سلسلتك بعلامة اقتباس أو اسم حقل أو نص آخر، فاحذفه. وإذا بدأت بـ SlZCRVJ، فقد رُمّز ملف PDF بـ Base64 مرتين: فك ترميزه مرة واحدة باستخدام أداة فك ترميز Base64 والصق النتيجة هنا. وإلا فقد تكون البيانات نوع ملف آخر، يمكن لأداة تحويل Base64 إلى ملف تحديده.
يُنزَّل ملف PDF لكنه لا يُفتح. ما الخطأ؟

الأرجح أن Base64 كان مقتطعًا. فكثيرًا ما تقتطع السجلات ووحدات التحكم وأدوات قواعد البيانات القيم الطويلة، ولا يمكن قراءة ملف PDF ينقصه جزؤه الأخير، لأن جدول الإسناد الترافقي الذي يحدد موضع كل صفحة مخزّن قرب نهاية الملف. انسخ القيمة الكاملة مجددًا، ويُفضَّل أن تحفظ الاستجابة الأصلية في ملف.

المعاينة فارغة على هاتفي. هل الملف تالف؟

ليس بالضرورة. فبعض متصفحات الهواتف لا تستطيع عرض ملف PDF داخل الصفحة. نزّل الملف وافتحه في قارئ PDF للتحقق منه.

هل يمكنني فك ترميز ملف PDF محمي بكلمة مرور؟

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

هل يُرفع المستند إلى أي مكان؟

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