Конечно, мы рекомендуем использовать HTML + CSS, где это возможно, и ваш ответ выше. Вам не хватает одной вещи, которая является номером страницы. Вы можете получить номер страницы на каждой странице, используя счетчики CSS. например
<style>
#header { position: fixed; border-bottom:1px solid gray;}
#footer { position: fixed; border-top:1px solid gray;} .pagenum:before { content: counter(page); } </style>
<div id="header">
<img src="logo.gif" style="margin-top:10px;"/>
</div>
<div id="footer">
Page <span class="pagenum"></span>
</div>
Одно значение, с которым вы не можете получить доступ через CSS, - это общее количество страниц. Поэтому для этого вам все равно придется использовать скриптовый текст.
Во-первых, немного информация. Большинство методов прямого доступа добавляют контент только к текущей странице (фактически, в настоящее время активный объект ... обычно это страница). Поэтому, рисуя линию или форму, добавляя изображение или добавляя текст, используя метод text()
, все рисуют на одну страницу. Вы можете обойти это ограничение путем рендеринга на отдельный объект, который затем добавляете на каждую страницу (open_object()
/close_object()
/add_object()
). Важно отметить, что отдельные объекты генерируются начиная с текущей страницы (т. Е. Все предыдущие страницы не будут видеть объект), поэтому вы, как правило, хотите работать с объектами через встроенный скрипт.
page_text()
способ - другой. Он специально предназначен для добавления контента на все страницы после того, как PDF-документ был предоставлен. Он работает снаружи и отдельно от контейнера отсоединенного объекта. У вас есть аналогичная функциональность в методе page_script()
, который обрабатывает сценарий таким же образом, как и текст page_text()
.
Все это означает, что на основе образца в вашем вопросе ваш код, вероятно, не делает то, что вы думаете.
Во-вторых, предупреждение. Вы не должны использовать utf8_decode()
, если только вы не намерены, чтобы ваш текст был только закодирован с началом iso-8859-1. utf8_decode()
вызывает потерю преобразования utf8 в iso-8859-1. dompdf полностью способен работать с utf8-кодированным текстом (начиная с версии 6.0) и будет обрабатывать любые необходимые преобразования. Вы должны ознакомиться с информацией в Unicode How-To, так как есть некоторые требования, связанные с вашей конфигурацией PHP/dompdf.
Со всей этой информацией в виду, вы могли бы использовать свой исходный код с некоторыми незначительными изменениями:
<?php
require_once("dompdf/dompdf_config.inc.php");
$html = file_get_contents("test.txt");
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$font = Font_Metrics::get_font("helvetica", "bold");
$canvas = $dompdf->get_canvas();
$canvas->page_text(555, 750, "{PAGE_NUM}/{PAGE_COUNT}", $font, 10, array(0,0,0));
$canvas->page_script('
// $pdf is the variable containing a reference to the canvas object provided by dompdf
$pdf->line(10,730,800,730,array(0,0,0),1);
');
$dompdf->stream("dompdf_out.pdf", array("Attachment" => false));
?>
Он работал для меня только после того, как я заменил '$ dompdf-> page_script()' с '$ холст -> page_script() '. – andreivictor
@ andreivictor, конечно, вы правы – BrianS