Как отображать вкладки с помощью Zend_PDF

У меня возникла проблема с созданием pdf-документов. Мои символы табулятора не отображаются должным образом. Я уже пробовал разные шрифты или кодировки (UTF-8, Windows1552). В некоторых шрифтах символ полностью скрыт. С некоторыми я получаю квадратный символ, отображаемый вместо моей вкладки «\ t».

Вот мой код.

Вопрос "Как отображать вкладки с помощью Zend_PDF?"

public function generate()
{
    $pdf        = new Zend_Pdf();
    $page       = new Zend_Pdf_Page( Zend_Pdf_Page::SIZE_A4 );

    //render basic template
    $template   = Zend_Pdf_Image::imageWithPath( APPLICATION_PATH . '/resources/pdf/template.png' );
    $page->drawImage( $template, 0 ,0, 595, 842 );

    //render document title     
    $font = Zend_Pdf_Font::fontWithPath( APPLICATION_PATH . '/resources/pdf/arial-bold.ttf' );
    $page   ->setFont($font, 14)                
            ->drawText( 'Rechnung', 390, 700, 'utf-8' );

    //render reciever adress
    $font = Zend_Pdf_Font::fontWithPath( APPLICATION_PATH . '/resources/pdf/arial.ttf' );



    $adressText = array( 
        'Kundennummer' . "\t" . $this->_user->getUserIdString(),
        'Belegnummer' . "\t" . $this->_payin->getPayinIdString(),
        'Datum' . "\t\t\t" . $this->_payin->getDateCreated()->format( 'd.m.Y' ),
        'Seite' . "\t\t\t" . '1/1'
    );

    $page   ->setFont($font, 12);
    $adressY  =  680;

    foreach( $adressText as $line )
    {
        $page->drawText( $line, 390, $adressY , 'utf-8' );
        $adressY -= 12;
    }


    //add page to pdf document
    $pdf->pages[] = $page;

    //save pdf
    $pdf->save( $this->getOption( 'path' ) );   
}

person Jakob Alexander Eichler    schedule 13.11.2011    source источник


Ответы (1)


Возможно, pdf не понимает \t.

Try replacing it with 'chr(9)' which is the ascii value of the tab character. For example:- $tab = chr(9); $adressText = array( 'Kundennummer' . $tab . $this->_user->getUserIdString(), 'Belegnummer' . $tab . $this->_payin->getPayinIdString(), // etc.. );

Исправление:
Поскольку вы должны указать координаты x, y для Zend_Pdf_Page::drawText(), такие вещи, как вкладки, перевод строки и т. д., не будут работать. Вам нужно будет установить фиксированные координаты для табуляции.

Например:-

$tabs = array(5, 20, 30, 50);
$page->drawText("At 1st tab", $tabs[0], 10);
$page->drawText("At 2nd Tab", $tabs[1], 10);
$page->drawText("At 3rd Tab", $tabs[2], 10);

Надеюсь, вы уловили идею.

person vascowhite    schedule 13.11.2011
comment
Спасибо за ваш ответ. Я попробовал это, но это не имело значения. - person Jakob Alexander Eichler; 14.11.2011
comment
Я тоже раньше думал о работе вокруг. В любом случае, спасибо. Я думаю, что я закончу с этим - person Jakob Alexander Eichler; 16.11.2011