Как добавить верхний и нижний колонтитулы в созданный PDF-файл в php - PullRequest
3 голосов
/ 02 сентября 2010

Я использую этот сайт как ссылку: http://www.ros.co.nz/pdf/

Я прочитал readme.pdf, но не нашел ни одной функции, которая инструктирует, как добавить верхний и нижний колонтитулы на каждой странице в pdf.

Ответы [ 3 ]

4 голосов
/ 16 сентября 2010

Вы должны быть в состоянии сделать это, открыв объект, создав свой контент, закрыв объект, а затем добавив объект в свой PDF.См. страницы 22-23 (PDF страницы 25-26) ссылки, которую вы цитировали для соответствующей документации.

Краткий пример:

<?php
include ('class.ezpdf.php');
$pdf =& new Cezpdf();
$pdf->selectFont('fonts/Helvetica.afm');

$footer = $pdf->openObject();
$pdf->addText(50, 50, 8, "some footer text");
$pdf->line(50,60,562,60);
$pdf->closeObject();
$pdf->addObject($footer, "all");

$pdf->ezText('Hello World!',50);
$pdf->ezStream();
?>
1 голос
/ 26 августа 2011

90% времени используйте решение BrianS .

Нижние колонтитулы могут быть намного сложнее, если вы не всегда знаете высоту содержимого.

Например, для квитанции с отрывным ярлыком на денежные переводы у меня работает что-то вроде этого:

$ok = 0;
$offset = (0 - $pdf->y);
while (!$ok) {
    $thisPageNum = $pdf->ezPageCount;
    $pdf->transaction('start');

    $offset = $offset + 1;
    $this->ezSetDy($offset);

    // Add your content here

    if ($this->ezPageCount==$thisPageNum) {
        $this->transaction('commit');
        $ok=1;
    } else {
        $this->transaction('rewind');
    }
}

Это обеспечит отображение вашего контента внизу последней страницы.*

Для вставки содержимого вы можете использовать openObject и closeObject, поэтому во время цикла while выполняется только повторная вставка.

0 голосов
/ 02 сентября 2010

Как насчет использования dompdf :

Попробуйте это для верхнего и нижнего колонтитула:

Вы можете добавлять изображения и формы (линиипрямоугольники и т. д.) на каждую страницу, используя PDF-объекты.Объект PDF захватывает все команды рендеринга как своего рода шаблон, который затем можно добавить на несколько страниц:

<script type="text/php">

if ( isset($pdf) ) {

  // Open the object: all drawing commands will
  // go to the object instead of the current page
  $footer = $pdf->open_object();

  $w = $pdf->get_width();
  $h = $pdf->get_height();

  // Draw a line along the bottom
  $y = $h - 2 * $text_height - 24;
  $pdf->line(16, $y, $w - 16, $y, $color, 1);

  // Add an initals box
  $font = Font_Metrics::get_font("helvetica", "bold");
  $text = "Initials:";
  $width = Font_Metrics::get_text_width($text, $font, $size);
  $pdf->text($w - 16 - $width - 38, $y, $text, $font, $size, $color);
  $pdf->rectangle($w - 16 - 36, $y - 2, 36, $text_height + 4, array(0.5,0.5,0.5), 0.5);

  // Add a logo
  $img_w = 2 * 72; // 2 inches, in points
  $img_h = 1 * 72; // 1 inch, in points -- change these as required
  $pdf->image("print_logo.png", "png", ($w - $img_w) / 2.0, $y - $img_h, $img_w, $img_h);

  // Close the object (stop capture)
  $pdf->close_object();

  // Add the object to every page. You can
  // also specify "odd" or "even"
  $pdf->add_object($footer, "all");
}

</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...