php - 如何使用 dompdf 创建多个页面

标签 php mysql arrays dompdf

我在处理多维数组及其值时遇到了一些问题。

我正在寻找的是,根据我的查询,我正在搜索数组中的教师姓名。之后我想使用 dompdf 创建一个 pdf。问题在于循环。我无法创建一个合适的循环来按照我希望的方式工作。我的示例查询是

    $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";
    }

现在我知道,这段代码令人困惑,但我想要的是,它应该在一个 pdf 文件中为每位教师创建 dompdf。就像从查询中获取教师一样,它应该为每位教师创建一个 dompdf 页面。目前它只根据我的查询搜索的最后一个值制作一页。

请帮忙。有点急。

最佳答案

您的循环工作正常。您向 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 closer HTML换行且未缩进。

EDIT2

仍然不太确定,您使用的是哪个库。我找到 this extension看起来不错,它叫做 dompdf,就像您在问题中所说的那样。

您的最新评论表明您到目前为止没有解决问题,因此我决定添加更多信息以帮助您找到目标。

Disclaimer: I am not going to write functional code and I will not test this, but the following hints will push you into the right direction to get your stuff done.

dompdf 能够读取输入文档的 CSS2 和 CSS3 属性。

while 中的每个周期上面的循环代表一位老师,他们每个人都在输出文档中获得自己的页面。

我将页面放入类为 teacherPage 的 div 容器中.您可以在这个容器中填充您想要为教师显示的所有信息。

现在我们需要做的就是告诉 dompdf 每个 teacherPage是一个新页面。这可以使用 @page 来完成标记 shipped with 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将在每个容器之后开始一个新页面

希望这对您有所帮助,祝您尝试愉快:)

关于php - 如何使用 dompdf 创建多个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14089883/

相关文章:

php - 图像不会添加到 SQL 数据库

java - MySql 本地数据库

javascript - 是否可以使用 javascript 中的 'for of' 循环从数组中拼接项目?

javascript - 形成多行插入的数组格式nodejs-mysql

php - wordpress - 发表评论时调用函数

php - Joomla 菜单不显示标题

php - 特定类别的用户帖子计数 [Wordpress]

java - 使用 JPA(Hibernate 实现)和 MySQL 保证 FIFO

php - Mysql join 用于以下ER

c - 生成四字母字符数组时出错