2015-05-16 1 views
2

Я пытаюсь рисовать линию/изображение на каждой странице pdf, используя dompdf, но начинается со второй страницы, почему это так? у кого есть идея?
Вот мой кодПочему строки/изображения рисуются только на последней странице pdf, используя dompdf в php

$dompdf = new DOMPDF(); 
$dompdf->load_html($message2); 
$dompdf->set_paper('a4','portrait'); 
$dompdf->render(); 

$canvas = $dompdf->get_canvas(); 

//For Header 
$header = $canvas->open_object(); 
$canvas->image($header_image1,'jpg',0, 0, 595, 100); 
$canvas->line(0,100,595,100,array(0,0,0),1); 
$canvas->close_object(); 
$canvas->add_object($header, "all"); 

//For Footer 
$footer = $canvas->open_object(); 
$canvas->line(0,740,650,740,array(0,0,0),1); 
$canvas->image($footer_image1,'jpg',0, 742, 595, 100); 
$canvas->close_object(); 
$canvas->add_object($footer, "all"); 

$output = $dompdf->output(); 

этот код нарисовать линию/изображение на PDF, но отображаться только на последней странице.
У меня есть две страницы в формате pdf, и моя линия/изображения рисуются на второй странице не на первой странице.

Пожалуйста, предложите любое решение.

ответ

2

Добавление объектов в DomPDF работает с текущей страницы. Другими словами, ваши объекты будут добавлены, но только со страницы, которую вы сейчас имеете, а затем на новые добавляемые вами страницы.

В вашем коде вы уже конвертировали свой HTML в PDF, поэтому текущая страница, скорее всего, является последней страницей в вашем документе. Таким образом, ваш верхний/нижний колонтитул добавляется туда, но не к предыдущим страницам.

Для размещения контента на каждой странице domPDF предоставляет два метода: page_text и page_script.

В вашем случае следующего типа кода следует сделать трюк:

$canvas->page_script(' 
    $pdf->line(10,730,800,730,array(0,0,0),1); 
'); 

код в функции page_script затем выполняется для каждый PDF страницы.

+0

спасибо за ответ, я уже пробовал это, но не показывал строки на любой странице. Я также редактирую файл cpdf_adapter.cls.php файла в папке include, где отсутствовала функция page_script. Я написал его следующим образом: function page_script ($ code, $ type = "text/php") { $ _t = "script" ; $ this -> _ page_text [] = compact ("_ t", "code", "type"); } Пожалуйста, помогите мне, если я пропустил что-нибудь здесь. –

+0

@SachinEndait Вам может потребоваться обновить копию dompdf. v0.6.1 рекомендуется и не требует никакого редактирования источника. – BrianS

+0

@BrianS благодарит за ответ, я решил свою проблему. –

0

Как добавить изображение во всю страницу pdf, используя заголовок и нижний колонтитул. Ниже мой код.

$pdf = App::make('dompdf'); 
$pdf->loadFile('invoice.html'); 
$pdf->output(); 
$dom_pdf = $pdf->getDomPDF(); 
$canvas = $dom_pdf ->get_canvas(); 
$image1="logo.png"; 
$canvas->image($image1,'png', 0, 0, 50, 25); 
$canvas->page_text(10, 10, "Page {PAGE_NUM} of {PAGE_COUNT}", null, 10, array(0, 0, 0)); 
$pdf->save('pdf_report/eft_payment-'.$RandomAccountNumber.'.pdf'); 
0

Строка не отображается для меня, потому что встроенный php отключен. Это решило проблему:

$dompdf->set_option("isPhpEnabled", true); 

Эта линия должна быть перед $ dompdf-> Render().

 Смежные вопросы

  • Нет связанных вопросов^_^