【问题标题】:How to add a header and footer to each printed page of a web document (without browser restriction)?如何为 Web 文档的每个打印页面添加页眉和页脚(不受浏览器限制)?
【发布时间】:2011-03-30 21:29:47
【问题描述】:

我正在用 CakePHP 构建一个 web 应用程序(不是真正密切相关,但无论如何),其任务是生成一个包含存储在数据库中的一堆内容(文章集合)的单个网页。我需要能够打印此文档并在打印文档时为每一页包含一个简单的页眉和页脚。

另外,我无法保证文章集合中单个项目的渲染长度会小于一张纸的长度,因此我无法像这样对每篇文章进行书尾:

<?php echo $header; ?>
<?php echo $article; // etc. ?>
<?php echo $footer; ?>

这里的好处是我将是唯一一个打印这个(并将其保存为 PDF,实际上)的人,所以任何提议的解决方案都不需要与仍然碰巧的任何神秘浏览器一起使用周围(IE6等)。

(在将此问题标记为 this similar question 的重复项之前,请注意,我并没有尝试使用 IE6,并且我正在打印的单个内容可能会超过单个打印页面长度。因此,基于表格的解决方案不适用于该问题 - 至少据我所知。)

如果这需要我做一些时髦的算术来将一大块连续的内容分解成近似大小的“页面”(显然,这将由页脚+分页符+页眉组合分隔),我'如果没有更理智的方法可以解决这个问题,我可以接受。

提前感谢您 - 如果您认为我可以提供更多信息或以其他方式使这种情况更容易解决,请发表评论。

【问题讨论】:

    标签: php html css printing


    【解决方案1】:

    要处理 PDF 端,请使用 wkhtmltopdf - 除了生成 PDF 的一般出色功能外,还对页眉和页脚提供了可靠的支持。

    查看手册中的“页眉和页脚选项”部分:http://madalgo.au.dk/~jakobt/wkhtmltoxdoc/wkhtmltopdf-0.9.9-doc.html

    当然,这假设您可以在您的服务器上运行自定义的可执行文件。

    【讨论】:

      【解决方案2】:

      尝试使用 FPDF,它具有 header() 和 footer() 作为框架的一部分。 http://www.fpdf.org/

      这将处理您的分页以及您的页眉/页脚以及您的 PDF 生成...

      替代 fpdf,如果您的内容可靠地分成页面大小的块,请使用 css...

      div.footer{
         page-break-after:always
      }
      

      【讨论】:

      • 感谢您的回复!如果可能的话,我希望避免使用代码生成 PDF。原因是,我需要对生成的文档进行大量的样式和布局,并且在我阅读的部分内容中,FPDF API 似乎使这种事情变得相当......很麻烦。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-31
      • 1970-01-01
      • 1970-01-01
      • 2010-12-29
      • 2017-10-16
      • 2020-07-29
      相关资源
      最近更新 更多