آخر الأخبار

استكشف في مدونة أوعي وشك عالم الابتكار

اكتشف الحلول المتطورة في تطبيقات الأجهزة المحمولة والتكنولوجيا والتعليم وموضوعات بلوجر. كن على اطلاع دائم بمقالات الخبراء والموارد الإبداعية والأدوات القوية لتعزيز مشاريعك الرقمية.

كيفية تحويل HTML إلى PDF باستخدام JavaScript نسخة محدثة

هذا الكود المحدث سيعطيك نتائج أفضل بكثير مع المحتوى العربي والعناصر المعقدة فيHTML.
كيفية تحويل HTML إلى PDF باستخدام JavaScript نسخة محدثة

إصدار حديث من jsPDF لتحويل HTML إلى PDF

اكواد

الإصدار الذي نشرناه في المقالة السابقة (1.3.4) قديم جداً. حالياً، الإصدار الأحدث هو 2.5.1. إليك كيفية تحديث الكود لاستخدام الإصدارات الحديثة:

تحديث رابط المكتبة
<!-- استبدل السطر القديم بهذا -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>

ملاحظة: في الإصدارات الحديثة، نستخدم عادةً html2canvas مع jsPDF لتحويل HTML إلى PDF بدقة أفضل.

الكود المحدث الكامل
<!DOCTYPE html>
<html>
<head>
  <title>تحويل HTML إلى PDF باستخدام jsPDF الحديث</title>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
  <style>
    #html2pdf {
      font-family: 'Arial', sans-serif;
      direction: rtl; /* للدعم الكامل للغة العربية */
      padding: 20px;
      background: white;
      color: #333;
    }
  </style>
</head>
<body>

<div id="html2pdf">
  <h5>مثال على التحويل إلى PDF</h5>
  <p>هذا محتوى عربي سيتم تحويله إلى ملف PDF</p>
  <p>يمكنك إضافة أي عناصر HTML هنا</p>
  
  <table border="1" style="width:100%">
    <tr>
      <th>اسم العنصر</th>
      <th>الوصف</th>
    </tr>
    <tr>
      <td>العنصر 1</td>
      <td>وصف العنصر الأول</td>
    </tr>
    <tr>
      <td>العنصر 2</td>
      <td>وصف العنصر الثاني</td>
    </tr>
  </table>
</div>

<button onclick="generatePDF()" style="margin:20px;padding:10px 20px;background:#4CAF50;color:white;border:none;cursor:pointer;">
  تحميل PDF
</button>

<script>
  // تهيئة jsPDF
  const { jsPDF } = window.jspdf;

  async function generatePDF() {
    try {
      // عرض رسالة تحميل
      const loading = alert("جاري إنشاء PDF... الرجاء الانتظار");
      
      // الحصول على العنصر المطلوب
      const element = document.getElementById('html2pdf');
      
      // استخدام html2canvas لالتقاط العنصر كصورة
      const canvas = await html2canvas(element, {
        scale: 2, // زيادة الدقة
        logging: false,
        useCORS: true,
        allowTaint: true
      });
      
      // إنشاء مستند PDF جديد
      const doc = new jsPDF({
        orientation: 'portrait',
        unit: 'mm',
        format: 'a4'
      });
      
      // إضافة الصورة إلى PDF
      const imgData = canvas.toDataURL('image/png');
      const imgWidth = doc.internal.pageSize.getWidth() - 20; // هامش 10مم من كل جانب
      const imgHeight = (canvas.height * imgWidth) / canvas.width;
      
      doc.addImage(imgData, 'PNG', 10, 10, imgWidth, imgHeight);
      
      // حفظ الملف
      doc.save('document.pdf');
      
      // إخفاء رسالة التحميل
      loading.close();
    } catch (error) {
      console.error('Error generating PDF:', error);
      alert('حدث خطأ أثناء إنشاء PDF: ' + error.message);
    }
  }
</script>

</body>
</html>
أهم التحسينات في الإصدار الحديث:
  • دعم أفضل للغة العربية: تمت إضافة direction: rtl للنصوص العربية
  • جودة أعلى: استخدام html2canvas يضمن الحفاظ على التنسيقات المعقدة
  • معالجة الأخطاء: تمت إضافة try/catch للتعامل مع الأخطاء
  • واجهة مستخدم أفضل: زر تحميل واضح ورسائل تقدم
  • دقة أعلى: استخدام scale: 2 في html2canvas ينتج صوراً بدقة مضاعفة
طريقة العمل الجديدة:
  1. يتم التقاط العنصر HTML كصورة باستخدام html2canvas
  2. تحويل الصورة إلى بيانات PNG
  3. إنشاء مستند PDF جديد
  4. إضافة الصورة إلى المستند PDF
  5. حفظ الملف النهائي
مميزات الإصدار الحديث:
  • دعم أفضل للخطوط العربية
  • الحفاظ على التنسيقات المعقدة
  • سرعة أكبر في المعالجة
  • تقارير أخطاء أكثر وضوحاً
  • خيارات أكثر تخصيصاً لحجم الصفحة والاتجاه

هذا الكود المحدث سيعطيك نتائج أفضل بكثير مع المحتوى العربي والعناصر المعقدة في HTML.

```
كيف كان المقال؟

لحظة من فضلك

نحن نتصفح الكثير من المواقع ونجلب لك المقالات التي تبحث عنها ونختصرها لك وهذه المقالات عند كتابتها ونشرها تاخذ مننا وقت وجهد وسهر كبير ونحن لا نطلب الكثير

لذلك نطلب منك تعليقا للمحتوي وطريقة نشره هل تعجبك ام لا نطلب منك الدعم ودعمك هو تعليقك لكي نستمر لذلك حبا وليس امر من فضلك اكتب تعليق

🌟 انتبه عزيزي أعضاء المجتمع! 🌟
نحن متحمسون لمشاركتك في مناقشاتنا الديناميكية. لضمان بيئة محترمة وشاملة للجميع، نطلب تعاونكم مع الإرشادات التالية:
1. احترام الخصوصية: يرجى عدم مشاركة معلومات حساسة أو شخصية في تعليقاتك.
2. انشر الإيجابية: نحن نتمسك بسياسة عدم التسامح مطلقًا مع خطاب الكراهية أو اللغة المسيئة. دعونا نحافظ على محادثاتنا محترمة وودية.
3. اللغة المفضلة: لا تتردد في التعبير عن نفسك باللغة الإنجليزية أو العربية. ستساعدنا هاتان اللغتان في الحفاظ على مناقشة واضحة ومتماسكة.
4. احترام التنوع: لتعزيز جو شامل، نطلب منك بكل احترام تجنب مناقشة المسائل الدينية في تعليقاتك.
تذكر أن مساهماتك قيمة، ونحن نقدر التزامك بجعل مجتمعنا مكانًا ترحيبيًا للجميع. دعونا نواصل التعلم والنمو معًا من خلال المناقشات البناءة والاحترام المتبادل.
شكرًا لكونك جزءًا من مجتمعنا اوعي وشك! 🌟

إرسال تعليق