سؤال

أنا بصدد إنشاء ملف PDF ديناميكي ، والذي يحتوي على بيانات من حوالي 10000 مستخدم ، بشكل عام تم تطوير التطبيق باستخدام MySQL و PHP. المحتوى الديناميكي ثقيل لدرجة أنني وجدت صعوبة في معالجته fpdf() صف دراسي. لذلك قمت بتحويل صفحة الإخراج PHP الخاص بي كملف HTML باستخدام ob_get_clean(). الآن يتم إنشاء ملف HTML بنجاح وأيضًا ملف PDF. لكنني أريد أن أترك كسر صفحة بعد بيانات كل مستخدم ، يجب أن تبدأ بيانات كل مستخدم في صفحة جديدة. لم أستطع استخدام أي علامات HTML لأنه في ملف HTML الذي تم إنشاؤه ديناميكيًا ، كل شيء خارج <html> و </html> العلامات. الرجاء مساعدتي بحيث أقوم بإنشاء صفحة في ملف PDF بعد بيانات كل مستخدم ... شكرًا مقدمًا :)

هل كانت مفيدة؟

المحلول

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

أعتقد أنني أعمل عن طريق القيام بالتعديلات التالية على HTML2PDF.Class:

حول الخط 4174 ، أول شيء في الداخل:

protected function _tag_close_P($param){

يجب ان يكون:

   if($this->parsingCss->value['page-break-after'] == "always")
        $this->_setNewPage();

حول الخط 2961 ، أول شيء في الداخل:

protected function _tag_close_DIV($param, $other='div'){

يجب ان يكون:

 if($this->parsingCss->value['page-break-after'] == "always")
        $this->_setNewPage();

نصائح أخرى

HTML2PDF يدعم صفحة بطاقة شعار:

protected function _tag_open_PAGE($param) {} 

في السطر 2229. يمكنك أن ترى هناك ما هي السمات المدعومة. على سبيل المثال ، يقوم التالية بإنشاء صفحة واحدة في المناظر الطبيعية وواحدة في وضع الصورة:

<page orientation="l">
... some content ...
</page>
<page orientation="p">
... some content ...
</page>

استنادا إلى عمل MacDabby (الذي لا يعمل). ولكن شكرا له ، الفكرة صحيحة.

html2pdf v4.03

على سبيل المثال ، نريد تحليل علامة Div:

html2pdf.class.php خط 2948:

protected function _tag_close_DIV($param, $other='div')
{
    if ($this->parsingCss->value['page-break-after'] == "always")
      $this->_setNewPage(null, '', null, $this->_defaultTop);
      $this->parsingCss->setPosition();
    ...
}

parsingcss.class.php خط 114:

//add a new style declaration
public function initStyle()
{
    ...
    $this->value['page-break-after'] = null;
}

سطر 1024 أضف معالجًا جديدًا إلى حالة التبديل:

case 'page-break-after':
    $this->value[$nom] = $val;
    break;

وبعد ذلك ، يجب أن يعمل محتوى HTML الخاص بك

 <div style="page-break-after:always; clear:both"></div>

احترس من النمط الحساس للحالة ، لست متأكدًا مما إذا كان المكون الإضافي يتعامل معه

ربما تريد استخدام بعض CSS ، على سبيل المثال:

h1 {page-break-before:always}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top