Как сбросить маржу в tcpdf многоклеточном, когда есть более одной страницы? - PullRequest
0 голосов
/ 28 апреля 2019

Я работаю с TCPDF (v6.2.25) в течение нескольких дней, и я застрял в чем-то сложном. Мой клиент должен печатать информацию с некоторыми полями на каждой странице, используя Multicell (в текстовой области). Например, на первой странице поля равны $pdf-> SetMargins (32, 44.5, 11);, а на второй странице поля $pdf-> SetMargins (12, 27.5, 29);, поскольку печатаемый им документ обычно содержит более 3 страниц (лицевая, оборотная, лицевая) ... иногда ему необходимо печатайте с полями в другом порядке (задняя, ​​лицевая и т. д.), поскольку бумага, которую он использует, является правительственным документом, и ему нужно следовать порядку, и он не может оставлять белые строки без письма.

У меня вопрос, как я могу сбросить поля в TCPDF на каждой новой странице?

Вот мой код:

// library
require_once($_SERVER['DOCUMENT_ROOT'] . '/pdf/tcpdf.php');

    define('K_CELL_HEIGHT_RATIO', 2);

    $pdf = new TCPDF('P', 'mm', 'usletter', true, 'UTF-8', false);

    // remove
    $pdf->setPrintHeader(false);
    $pdf->setPrintFooter(false);

    // set font
    $pdf->SetFont('times', '', 12);

    // $page is for front or back, this is chosen by my client when he sees the page
    // $line is for the row where the document will start printing, my client chooses the line, the page has only 24 lines where printing is allowed

if($page == 'front'){

    if($line == '1'){ $nline = '44.5'; } 
    if($line == '2'){ $nline = '53'; } 
    ...
    if($line == '24'){ $nline = '240'; };

    // set margins(right, top, left);
    $pdf->SetMargins(32, $nline, 11);

    $pdf->SetAutoPageBreak(TRUE, 48);
} else {

    if($line == '1'){ $nline = '27.5'; } 
    if($line == '2'){ $nline = '36'; } 
    ...
    if($line == '24'){ $nline = '223'; };

    $pdf->SetMargins(12, $nline, 29); 

    $pdf->SetAutoPageBreak(TRUE, 63.5); 
}

    $txt = 'document info.....';
    $pdf->Multicell(171, 181, $txt, 0, 'J', 0, 1, '', '', false, 0, true, false, 0);

    $pdf->Output('document.pdf', 'I');

Прямо сейчас только первая страница распознает $page и $line на других страницах, поля такие же, как на первой, а $line тоже, что и первая страница, и мне нужно, чтобы на следующих страницах сбросьте поля для строки 1, а верхнее поле для передней или задней страницы в соответствии с соответствующей страницей.

...