Menu

#122 Double columns font problem

closed
nobody
None
5
2012-10-09
2008-11-19
No

When printing a two columns document, where you don't know how long the text is, I'm doing in this way:

-> setup right margin
-> print left column
-> goto first page
-> resetup right margin to default (1 cm)
-> setup the right margin
-> print right column

Doing in this way, it occours that right column text may change font style during an autopagebreak.

It seems that the font style in the right column assume the value of the last printed text in the LEFT column.

Thanks

Discussion

  • Gianni Carabelli

    testcase

     
  • Gianni Carabelli

     
  • Nicola Asuni

    Nicola Asuni - 2008-11-19

    To print multiple columns with TCPDF, the methods Write() and WriteHTML() cannot be used directly.
    You must use the Multicell() or WriteHTMLCell() instead, as explained on example 7.

    If you want use multiple WriteHTMLCell() calls on the same column you can use the approach below:


    // set font

    $pdf->SetFont("times", "", 12);

    // create columns content

    $left_column_text = "left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column left column";

    $right_column_text = "right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column right column";

    // set columns width

    $first_column_width = 80;

    $second_column_width = 80;

    // get current margins
    $margins = $pdf->getMargins();

    // get current vertical position

    $current_y_position = $pdf->GetY();

    // write the first column

    $pdf->writeHTMLCell($first_column_width, 0, 0, 0, $left_column_text, 1, 1, 0, true, 'J');
    $pdf->writeHTMLCell($first_column_width, 0, 0, 0, $left_column_text, 1, 1, 0, true, 'J');

    $pdf->writeHTMLCell($first_column_width, 0, 0, 0, $left_column_text, 1, 1, 0, true, 'J');
    $pdf->writeHTMLCell($first_column_width, 0, 0, 0, $left_column_text, 1, 1, 0, true, 'J');

    // go back to the first page
    $pdf->SetPage(1);
    // set the left margin
    $pdf->SetLeftMargin($first_column_width + $margins['left']);
    $pdf->SetY($current_y_position);

    // write the second column
    $pdf->writeHTMLCell($second_column_width, 0, 0, 0, $right_column_text, 1, 1, 0, true, 'J');

    $pdf->writeHTMLCell($second_column_width, 0, 0, 0, $right_column_text, 1, 1, 0, true, 'J');
    $pdf->writeHTMLCell($second_column_width, 0, 0, 0, $right_column_text, 1, 1, 0, true, 'J');
    $pdf->writeHTMLCell($second_column_width, 0, 0, 0, $right_column_text, 1, 1, 0, true, 'J');

    // reset pointer to the last page

    $pdf->lastPage();

    // reset margin
    $pdf->SetLeftMargin($margins['left']);


     
  • Gianni Carabelli

    testcase with MultiCell() and no Write()

     
  • Gianni Carabelli

    please considerate the new testcase uploaded now.
    It seems that I followed your instruction.
    Or still I missed something?
    Thanks and sorry for insistence.

     
  • Nicola Asuni

    Nicola Asuni - 2008-11-21

    correct double column implementation

     
  • Nicola Asuni

    Nicola Asuni - 2008-11-21

    Seems that you are still using the wrong approach.
    Please check the attachment test_double_column3.php for correct implementation.

     

Log in to post a comment.

MongoDB Logo MongoDB