문제

TCPDF를 사용하여 프로젝트 중 하나에서 PDF를 생성하고 있습니다. 나는 단순히 HTML 파일을 만들고 pdf 생성을 처리하기 위해 TCPDF에 제공합니다. 그러나 이제 여러 인증서가 추가 된 HTML이 있으며 페이지를 나누고 싶습니다. HTML에 의해 페이지 브레이크를 결정해야합니다. 즉, TCPDF가 이해하는 HTML에 식별자가 있는지 알고 싶습니다. 따라서 생성 된 PDF에 페이지 브레이크를 추가합니다.

어떻게 할 수 있습니까?

도움이 되었습니까?

해결책

사용 중입니다 <br pagebreak="true"/>.

방법을 찾으십시오 쓰기 html 그리고 코드

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를 사용할 수 있습니다 addPage () 와 함께 방법 터지다() 그리고 적절한 구분 기호 :

$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" />

각각은 페이지 상단에서 새 페이지를 시작하지 않고 HTML 텍스트 사이에 전체 A4 페이지 빈 공간을 추가했습니다. 따라서 텍스트가 페이지 중간에 종료되고 페이지 브레이크가 삽입되면 새 텍스트가 다음 페이지의 중간에서 작성되었습니다. 내가 원하지 않는 것.

작동 한 것은 이것입니다 (여기서 찾았습니다 TCPDF 새 페이지를 강요합니다):

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

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

이것은 이제 페이지 위에 텍스트를 작성하는 것으로 시작합니다.

TCPDF는 HTML 태그 및 CSS 속성의 'PageBreak'속성을 지원합니다. 예를 들어 사용할 수 있습니다 <br pagebreak="true" />.

공무원을 확인하십시오 http://www.tcpdf.org 자세한 내용은 웹 사이트 및 포럼.

2011-12-23의 버전 5.9.142를 사용하여 사용할 수 있습니다 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>';

tcpdf 구성 파일의 매개 변수 k_tcpdf_calls_in_html이 참인지 확인해야합니다.

이 방법을 따라 요구 사항을 달성 할 수도 있습니다.

$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 TCPDF 런타임 중에 HTML 태그에.

// 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