css - 格式化 html 以使用页码打印

标签 css printing html2pdf

这是基本问题......

我有一个很长的 HTML 文档(一份 100 多页的契约(Contract)),最终需要是一个带有页眉和页脚(页码)的 PDF 文档。实现这一目标的最佳工具/语言是什么?

这是背景故事......

我在一家向分包商签发契约(Contract)的低技术建筑公司的卫星办公室工作,因为我是唯一能够解除打印机故障的人,所以我已成为公司中事实上的 IT 人员。过去,要签订契约(Contract),必须浏览 MS Word 文档(样板契约(Contract))并输入必要的信息才能生成契约(Contract)。

大约一年前,我对这种方法感到非常沮丧,以至于我创建了一个 MS Access 数据库,用户可以在其中使用 Access 表单添加信息,然后使用 MS Word 进行邮件合并以填充契约(Contract)。这是一个巨大的改进,而且我们已经能够使用其他数据库功能更轻松地开始跟踪资金。数据库存储在卫星办公室的共享计算机上。但是,只有当个人用户在他们的个人计算机上安装了 MS Access 和 MS Word,并且他们物理连接到我们的本地网络时,该系统才能工作。

随着该系统在卫星办公室的成功,我现在正尝试创建该工具的基于 Web 的版本,公司中的每个人都可以使用它,它只依赖于个人机器上的标准软件,并且可以在任何地方访问。

我已经使用 XAMPP 将一台计算机转换为用于开发目的的服务器,创建了一个 SQL 数据库,创建了 HTML 表单,并且正在使用 PHP 运行查询。在过去的几个月里,我通过包括 CSS 在内的无数语言进行了速成类(class),并最终掌握了所有内容,以至于系统将创建一个 HTML 版本的契约(Contract),其中包含所有内容。现在我只需要将它格式化为带有页眉和页脚(页码)的打印(最好是虚拟 PDF 打印机)。这应该是最简单的部分,对吧?

带有 @media: print 标签的 CSS 从表面上看似乎是实现这一目标的最佳方式,因为 CSS3 使用诸如“@top-left”和“content: counter(page)”之类的标签来完成所有事情我想要的;然而,在投入大量时间设置一切之后,似乎只有 Foxfire 支持这一点,而 IE 和 Chrome 绝对不支持。

页眉和页脚与正文内容重叠,我根本无法使用分页功能。显然,这些都是常见的挫败感。

在我的狩猎过程中,我遇到了一个名为 Prince 的程序,它似乎可以做我想做的事情(甚至更多),但它的价格远远超过我愿意支付的价格。

我不敢相信我想做的是一件新的或独特的事情。我怀疑我只是没有在搜索正确的关键字。是否有更好的工具/技术可以在不花费大量金钱的情况下将 HTML 转换为适合打印的格式?

最佳答案

我感受到了你的痛苦。但我发现唯一真正有效的解决方案是使用 PDF 库直接从 PHP(或 Python 或其他语言,但你提到了 PHP,我已经做到了)将格式化文本写入 PDF。我经常使用 R&OS:

http://pdf-php.sourceforge.net/

上手可能需要一些时间,但您几乎可以用它做任何事情,包括轻松创建格式精美的表格、流畅的文本和嵌入的图像。问题是,除了一些像 这样的标签,你不能使用任何 HTML 或 CSS——本质上你写了两个输出例程,一个用于 HTML一个用于 PDF。

关于css - 格式化 html 以使用页码打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42355243/

相关文章:

html - 更改屏幕大小时,文本和按钮会移位

javascript - JQuery - 自动更改图像的功能

php - 打印机使用的 PDF 中的标记,如何生成和 QA 过程

vba - 使用 Excel VBA 列出打印机时遇到问题

css - 打印样式表不能完全工作

javascript - html2pdf 不适用于 Firefox 中的 reactjs

php - 如果用户更改了只应在登录后出现的隐藏元素的 css 怎么办?

javascript - 如何在 React 中禁用挂载时的初始悬停过渡?

php - 在标签的样式属性中时不解释 CSS

java - 将 HTML 转换为 -> PDF -> 转换为 MULTIPARTFILE SpringBoot 和 Thymeleaf