首页 文章

计算html分页符(html 2 pdf)服务器端,以获得具有页眉和页脚的精确打印布局

提问于
浏览
3

我们打印通过html生成的pdf书籍到pdf应用程序 .

每个页面都有一个页眉和页脚,我们准确地使用不同语言的制作和翻译限制(以及布局变化)来确保每个页面的固定内容适合 .

因此,例如,尽管我们的内容是动态的,但预计一个段落将为书中的相同位置获取大约相同的空间量 . 我们有时会更改翻译的样式和布局属性,但适用相同大小的相同规则 .

我们在每个页面上都有一个页眉和页脚,并使用css换行将整本书呈现为一个长html页面,以强制每个页眉进入新页面 . 所以反映我们控制每页服务器端的固定内容高度 .

这很好用,我们非常满意HTML在演示中提供的优势(设计师而不是程序员可以设计页面等),我们也投入大量资金用于此技术,我们现在太深入改变方向,所以我们无法改变我们的技术,我们正在使用html 2 pdf,我们需要尽可能做到最好 . 这并不是说我们不能混合技术 . 但...

问题是,我们现在有一些可变大小的内容,我们以前没有控制权,对我们来说它是文本,所以我们可以控制它的格式,但不是它的数量 . 我们也有不同大小的 Headers .

我们需要一种计算分页符的方法,留下尽可能少的空白区域,我很想知道其他人是如何处理这个问题的 . 我知道这不是一门精确的科学,但我仍然需要最好的方法 .

我们完全控制渲染/布局引擎,它始终是ie8兼容的,因此不需要考虑不同的浏览器 .

这些是我的想法,很想听听你的:

  • 这是我们当前的方法,每页分配一些行数(按字体大小和字体变量以允许不同的语言环境)每个内容块将计算为n行成本,此数字用于计算分页符 .

亲简单

Con不准确,我们的字体都不是等宽字体,需要为每个区域设置进行配置 .

  • 将每个连续页面的自由流动内容渲染到精确页面宽度(固定div)div中的网页中,让它流向所需的任何垂直高度,使用html 2 bmp解决方案捕获图像并使用渲染的高度图像(检测到边缘并在需要时裁剪)以计算所需的页数 .

如果自由流动内容保持连续,Pro可能是准确的,而不是太昂贵 .

Con Incomplete解决方案,一旦我知道所需的页数,我怎么知道在哪里打破html?使用这种方法测量每一页并进行边缘检测将非常昂贵 .

  • 在逐字体的基础上,事先知道文本和 Headers 的字体大小,填充和边距,使用从字体文件中提取的宽度数据逐字符计算宽度和换行符和高度 .

Pro一旦提取了所有数据,并且为HTML渲染的差异添加了边距,这可能相当准确 .

Con高度复杂且对样式表更改敏感 .

  • 我们可以使用WebBrowserControl以某种方式测量内容吗?

喜欢听你的想法和建议 .

编辑....

我们的pdf转换器是Winnovative,它在.net Windows服务中运行,但我们的html提要是用PHP生成的 .

2 回答

  • 1

    请参考手册http://www.winnovative-software.com/manual%5CHTML%20to%20PDF%20Converter%20for%20.NET%20-%20Developer%27s%20Manual.htm

    第5.1点 . 希望这个解决方案能帮到你

    注意:内部链接不起作用,请亲自手动导航到所需的点 .

  • 1

    这个问题很古老,但我和你做的基本相同 . 我发现行号计数仍然很重要,但您可以使用css样式行高来标准化每行的大小 . (如果html是基于表格的tr的高度) . 这应该允许您每页有一定数量的行 .

    你有没有想出一个适合你的解决方案?

相关问题