2016-08-17 2 views
1

Я использую dompdf 0.7.0 и пытаюсь записать текст в PHP на моем PDF после рендеринга. Мне нужен текст на конкретных страницах и нашел следующее из ответа от Brian DomPDF {PAGE_NUM} not on first pagedompdf - текст на одной странице/page_script не работает

Функция page_script звучит как правильный ответ. Я мог проверить, находится ли цикл в настоящее время на странице 3 или что-то еще.

Должен ли я включать любые опции для этой функции?

Пример:

$dompdf = new Dompdf($options); 
    $dompdf->set_option('default_font', 'open sans'); 
    $dompdf->set_option('fontHeightRatio', 1); 
    $dompdf->setPaper('A4') 


    $dompdf->set_option('enable_html5_parser', true); 
    $dompdf->set_option('enable_php', true); 

    $dompdf->loadHtml($html); 
    $dompdf->render(); 

    $canvas = $dompdf->get_canvas(); 
    $canvas->page_script(' 
    if ($PAGE_NUM > 1) { 
     $current_page = $PAGE_NUM-1; 
     $total_pages = $PAGE_COUNT-1; 
     $canvas->text(0, 0, "$current_page/$total_pages", "open sans condensed", 10, array(0,0,0)); 
    } 
    '); 

Он по-прежнему отображаться на моей первой странице.

+0

Это выглядит нормально, но можете ли вы добавить код, связанный с dompdf? До и в том числе v0.7.0 вы должны визуализировать PDF, прежде чем сможете применить скрипт страницы. – BrianS

+0

привет Брайан :) Я обновил свой пост с инициацией dompdf. – kristof

+0

Какова ценность '$ PAGE_NUM' на каждой странице? – BrianS

ответ

1

$canvas не будет доступен из сценария страницы, так как он выходит за рамки. Объект canvas можно ссылаться внутри вашего сценария страницы как $pdf.

Попробуйте следующий page_script вызов вместо:

$canvas->page_script(' 
    if ($PAGE_NUM > 1) { 
    $current_page = $PAGE_NUM-1; 
    $total_pages = $PAGE_COUNT-1; 
    $font = $fontMetrics->getFont("open sans condensed", "normal"); // or bold, italic, or bold_italic 
    $pdf->text(0, 0, "$current_page/$total_pages", $font, 10, array(0,0,0)); 
    } 
}; 

Есть несколько переменных, доступных внутри скриптов страниц или встроенный скрипт:

  • $PAGE_NUM: номер текущей страницы
  • $PAGE_COUNT: общее число страниц
  • $pdf: объект на холсте
  • $fontMetrics: экземпляр класса FontMetrics

Если вы используете текст страницы у вас есть доступ к следующим переменным шаблона:

  • {PAGE_NUM}: номер текущей страницы
  • {PAGE_COUNT}: общее количество страниц

Примечание. Поддержка разбора встроенного сценария или скриптов страниц по умолчанию отключена. Включите его с помощью следующей команды: $dompdf->set_option("isPhpEnabled", true);. Это необходимо сделать до звонка $dompdf->render();.

+0

Знаете ли вы, как стилизовать переменные «PAGE», т.е. полужирным шрифтом, поскольку они передаются в '$ pdf-> text()'? –

+0

Вам нужно будет выбрать соответствующий шрифт с помощью метода 'selectFont()' (который я только что понял, что я забыл исправить в этом коде, отредактировал ответ). – BrianS

+0

Я думаю, я должен создать три или около экземпляры 'текста $ pdf->()' только так я могу достичь этого: «' Страница {PAGE_NUM} из {PAGE_COUNT} '» :-( Спасибо ! –

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