计算服务器端的html分页符(html 2 pdf),以便使用页眉和页脚进行精确的打印布局
本文关键字:html 布局 打印 分页 服务器端 pdf 计算 | 更新日期: 2023-09-27 18:26:19
我们打印通过html到pdf应用程序生成的pdf书籍。
每个页面上都有页眉和页脚,我们使用不同语言的生产和翻译限制(以及布局变化)来准确地放置内容,以确保每个页面的固定内容适合。
因此,例如,尽管我们的内容是动态的,但一个段落在书中的同一位置需要大约相同的空间。我们有时会更改翻译的样式和布局属性,但同样的大小规则也适用。
我们在每一页上都有一个页眉和页脚,整本书都被呈现为一个长html页面,使用css换行将每个页眉强制放到一个新页面上。因此,为了反映我们在服务器端控制固定的每页内容高度。
这很好,我们对HTML在演示中为我们提供的优势感到非常满意(设计师而不是程序员可以设计页面等),我们也在这项技术上投入了大量资金,我们现在太深了,无法改变方向,所以我们无法改变我们的技术,我们使用的是HTML 2 pdf,我们需要尽可能地使其发挥最佳作用。这并不是说我们不能混合技术。但是。。。
因此,问题是,我们现在有一些可变大小的内容,我们以前无法控制,对我们来说,它是文本,所以我们可以控制它的格式,但不能控制它的数量。我们也有不同大小的标题。
我们需要一种计算分页符的方法,尽可能少地留出空白,我很想知道其他人是如何处理的。我知道这不是一门精确的科学,但我仍然需要最好的方法。
我们完全可以控制渲染/布局引擎——它总是与ie8兼容,所以不需要考虑不同的浏览器。
这些是我的想法,很想听听你的:
- 这是我们目前的方法,为每页分配一定数量的行数(根据字体大小和字体变化,以允许不同的地区),每个内容块将被计算为n行成本,这个数字用于计算分页符
亲简单
不准确的是,我们的字体都不是单空格的,需要为每个区域设置配置。
- 使用html 2 bmp解决方案捕获图像并使用渲染图像的高度(边缘检测和裁剪,如果需要)来计算所需的页数,将每个连续的自由流内容页面渲染到一个页面宽度(固定div)的div中,使其流到所需的任何垂直高度
如果自由流内容保持连续,Pro可能是准确的,不会太贵。
Con不完整的解决方案,一旦我知道所需的页数,我如何知道在哪里破坏html?使用这种方法和边缘检测来测量每个页面将是非常昂贵的。
- 在逐个字体的基础上,提前了解字体大小、文本和标题的填充和边距,使用从字体文件中提取的宽度数据计算宽度、换行符和高度,逐个字符进行字符排序
Pro一旦提取了所有数据,并为HTML呈现的差异添加了边距,这可能相当准确。
Con高度复杂,对样式表变化敏感。
- 我们可以使用WebBrowserControl以某种方式测量内容吗
喜欢听你的想法和建议。
编辑。。。。
我们的pdf转换器是Winnovive,它在.net Windows服务中运行,但我们的html提要是用PHP生成的。
请参阅手册http://www.winnovative-software.com/manual%5CHTML%20to%20PDF%20Converter%20for%20.NET%20-%20开发人员%27s%20Manual.htm
第5.1点。希望这个解决方案能帮助你。
注意:内部链接不起作用,请手动导航到所需的点。
这个问题很老,但我正在做和你一样的基本事情。我发现行号计数仍然很重要,但您可以使用css样式的行高来标准化每行的大小。(如果html是基于表的,则tr的高度)。这样可以使每页的行数保持不变。
你有没有想出一个对你有效的解决方案?