Как создать несколько страниц с dompdf

У меня возникают проблемы с многомерным массивом и его значением.

То, что я ищу, из моего запроса я ищу имя учителя в массиве. И после этого я хочу создать pdf, используя dompdf. Проблема связана с циклом. Я не могу создать правильный цикл, который будет работать так, как я хочу, чтобы он работал. Мой пример запроса

    $q11 = "select id from teachers order by teacher ";
    $r11 = mysql_query($q11) or die(mysql_error());
    while($rows11 = mysql_fetch_array($r11)){
        $teacher = $rows11['id'];
        $dompdf->"It will start working";
    }

Теперь я знаю, этот код запутан, но я хочу, он должен создать dompdf для каждого учителя в одном файле PDF. Как и из запроса, он должен привлекать учителей, и для каждого учителя он должен создать страницу dompdf. В настоящее время он делает только одну страницу в соответствии с последним значением, которое имеет мой запрос.

Пожалуйста, помогите. Это срочно.

Ответ 1

Ваша петля работает нормально. То, как вы добавляете страницы в свой PDF файл, вероятно, неверно. По-видимому, вы перезаписываете одну страницу снова и снова, а не добавляете новую.

ИЗМЕНИТЬ

Я никогда не использовал dompdf. Быстрый взгляд на документы позволяет мне думать, что вы создаете что-то вроде разметки HTML, которая затем преобразуется в PDF, я правильно понял?

Пример кода

$html = <<<HTML
  <html>
      <head>
            <style type="text/css">
                /* Your document styling goes here */
            </style>
      </head>
      <body>
HTML;

while ( $row = $dbResult->fetch_assoc() ) {
    $html .= '<div class="teacherPage">'
                 . $row['name'] // your teacher document goes here
             '</div>';
}

$html .= '</body></html>';

$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("sample.pdf");

Если вы задаетесь вопросом о необычном синтаксисе $var = <<<HTML \r\nHTML, это heredoc. Гораздо удобнее использовать heredocs, когда у вас много чужого встроенного кода, у этого могут быть переменные {$varname}, и вам не нужно беспокоиться о котировках. Все, что вам нужно, чтобы убедиться, что heredoc ближе HTML находится в новой строке и не имеет отступов.

EDIT2

Все еще не слишком уверен, какую библиотеку вы используете. Я нахожу это расширение довольно неплохо, и он называется dompdf, так же, как вы сказали в своем вопросе.

Ваш последний комментарий указывает, что вы не решили вашу проблему до сих пор, поэтому я решил добавить дополнительную информацию, чтобы довести вас до цели.

Отказ от ответственности: я не буду писать функциональный код, и я не буду проверять это, но следующие подсказки будут подталкивать вас в правильном направлении, чтобы сделать ваши вещи.

dompdf может читать свойства CSS2 и CSS3 вашего входного документа.

Каждый цикл в цикле while выше представляет собой один преподаватель, каждый из которых получает собственную страницу в выходном документе.

Я помещаю страницу в контейнер div с классом teacherPage. Вы можете заполнить этот контейнер всей информацией, которую вы хотите отобразить для учителя.

Теперь все, что нам нужно сделать, это сказать dompdf, каждый teacherPage - это новая страница. Это можно сделать, используя @page markup поставляемый с CSS3

Я добавил пустой пример css-контейнера <style type="text/css"></style> в примерный документ выше, где должен выглядеть стиль страницы.

Пример CSS

@page teacher {
  size: A4 portrait;
  margin: 2cm;
}

.teacherPage {
   page: teacher;
   page-break-after: always;
}

С помощью @page вы можете определить именованную страницу teacher, которая может иметь свойства, допустимые для всего контейнера страницы.

page-break-after: always начнет новую страницу после каждого контейнера

Надеюсь, что это поможет, получайте удовольствие, пытаясь:)

Ответ 2

По всей видимости, проблем с переполнением нет, и результаты занимают больше допустимого поля листа. Что вы можете сделать, это отделить данные от родителя в другой таблице и поместить их между ними:

<div style="page-break-before: always;"></div>

Ответ 3

это действительно помогает мне, но есть пустая страница, которая создается в конце документа, как