سؤال

أنا أستخدم TCPDF لإنشاء PDF في أحد مشاريعي. أنا ببساطة إنشاء ملف HTML وأعطيه إلى TCPDF للتعامل مع جيل PDF. ولكن الآن لدي بعض HTML حيث تتم إضافة شهادات متعددة واحدة تلو الأخرى وأريد أن أحصل على صفحة في صفحة. يجب أن تقرر HTML IE Break من قبل HTML أي ما إذا كان هناك أي معرف في HTML يفهمه TCPDF ثم يضيف وفقًا لذلك فاصل PDF الذي تم إنشاؤه.

كيف أستطيع فعل هذا؟

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

المحلول

أنا استخدم <br pagebreak="true"/>.

ابحث عن الطريقة الكتابة والرمز

if ($dom[$key]['tag'] AND isset($dom[$key]['attribute']['pagebreak'])) {
    // check for pagebreak
    if (($dom[$key]['attribute']['pagebreak'] == 'true') OR ($dom[$key]['attribute']['pagebreak'] == 'left') OR ($dom[$key]['attribute']['pagebreak'] == 'right')) {
        // add a page (or trig AcceptPageBreak() for multicolumn mode)
        $this->checkPageBreak($this->PageBreakTrigger + 1);
    }
    if ((($dom[$key]['attribute']['pagebreak'] == 'left') AND (((!$this->rtl) AND (($this->page % 2) == 0)) OR (($this->rtl) AND (($this->page % 2) != 0))))
            OR (($dom[$key]['attribute']['pagebreak'] == 'right') AND (((!$this->rtl) AND (($this->page % 2) != 0)) OR (($this->rtl) AND (($this->page % 2) == 0))))) {
        // add a page (or trig AcceptPageBreak() for multicolumn mode)
        $this->checkPageBreak($this->PageBreakTrigger + 1);
    }
}

نصائح أخرى

يمكنك استخدام TCPDF's إضافة صفحة() الطريقة في تركيبة مع ينفجر() ومحدد مناسب:

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8',
                 false);

// TCPDF initialization code (...)

$delimiter = '<h1>';
$html      = file_get_contents('./test.html');
$chunks    = explode($delimiter, $html);
$cnt       = count($chunks);

for ($i = 0; $i < $cnt; $i++) {
    $pdf->writeHTML($delimiter . $chunks[$i], true, 0, true, 0);

    if ($i < $cnt - 1) {
        $pdf->AddPage();
    }
}

// Reset pointer to the last page
$pdf->lastPage();

// Close and output PDF document
$pdf->Output('test.pdf', 'I');

حاولت استخدام

<br pagebreak="true" />

أو

<tcpdf method="AddPage" />

لم ينتج كل منهما في بدء تشغيل صفحة جديدة في الجزء العلوي من الصفحة ولكن إضافة مساحة فارغة A4 الكاملة بين نص HTML. لذلك إذا انتهى النص في منتصف الصفحة ثم تم إدخال كسر الصفحة ، فقد تم كتابة النص الجديد من منتصف الصفحة التالية. الذي لم أكن أريده.

ما نجح هذا (وجدها هنا TCPDF إجبار صفحة جديدة):

$pdf->writeHTML($content, true, 0, true, 0);

$pdf->AddPage();
$pdf->setPage($pdf->getPage());  

يبدأ هذا الآن بكتابة نص أعلى الصفحة.

تدعم TCPDF سمة "pageBreak" لعلامات HTML وخصائص CSS 'Break-Break-be-fore "و" page-break-efter ". على سبيل المثال يمكنك استخدامه <br pagebreak="true" />.

تحقق من المسؤول http://www.tcpdf.org موقع الويب والمنتديات لمزيد من المعلومات.

مع الإصدار 5.9.142 من 2011-12-23 يمكننا استخدام page-break-before, page-break-inside خصائص CSS ، مثل هذا:

<div style="page-break-inside:avoid;">
some non breakable text
</div>

وفق http://www.tcpdf.org/examples/example_049.phps يمكنك استخدام شيء مثل هذا

$html .= '<tcpdf method="AddPage" /><h2>Graphic Functions</h2>';

تحتاج إلى التحقق من أن المعلمة K_TCPDF_CALLS_IN_HTML في ملف تكوين TCPDF صحيح.

يمكنك أيضًا اتباع هذه الطريقة لإنجاز احتياجاتك:

$htmlcontent1="CERTIFICATE NUMBER 1 IMAGE HERE";

// output the HTML content
$pdf->writeHTML($htmlcontent1, true, 0, true, 0);

// reset pointer to the last page
$pdf->lastPage();

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Print a table

// add a page
$pdf->AddPage();

$htmlcontent1="CERTIFICATE NUMBER 1 IMAGE HERE";

// output the HTML content
$pdf->writeHTML($htmlcontent1, true, 0, true, 0);
// reset pointer to the last page
$pdf->lastPage();

// ---------------------------------------------------------

//Close and output PDF document
$pdf->Output('textcertificate.pdf', 'D');

يأمل أن يساعد شخص ما :)

شكرًا

إعطاء عنصر الخاص بك page-break-after, page-break-before أو page-break-inside ستطبق الخاصية عبر CSS السمة pagebreak أو pagebreakafter إلى علامة HTML خلال وقت تشغيل TCPDF.

// page-break-inside
if (isset($dom[$key]['style']['page-break-inside']) AND ($dom[$key]['style']['page-break-inside'] == 'avoid')) {
    $dom[$key]['attribute']['nobr'] = 'true';
}
// page-break-before
if (isset($dom[$key]['style']['page-break-before'])) {
    if ($dom[$key]['style']['page-break-before'] == 'always') {
        $dom[$key]['attribute']['pagebreak'] = 'true';
    } elseif ($dom[$key]['style']['page-break-before'] == 'left') {
        $dom[$key]['attribute']['pagebreak'] = 'left';
    } elseif ($dom[$key]['style']['page-break-before'] == 'right') {
        $dom[$key]['attribute']['pagebreak'] = 'right';
    }
}
// page-break-after
if (isset($dom[$key]['style']['page-break-after'])) {
    if ($dom[$key]['style']['page-break-after'] == 'always') {
        $dom[$key]['attribute']['pagebreakafter'] = 'true';
    } elseif ($dom[$key]['style']['page-break-after'] == 'left') {
        $dom[$key]['attribute']['pagebreakafter'] = 'left';
    } elseif ($dom[$key]['style']['page-break-after'] == 'right') {
        $dom[$key]['attribute']['pagebreakafter'] = 'right';
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top