【问题标题】:Automatic multi-page multi-column flowing text with QtWebkit (HTML/CSS/JS -> PDF)使用 QtWebkit (HTML/CSS/JS -> PDF) 自动多页多列流动文本
【发布时间】:2009-08-18 14:40:16
【问题描述】:

我有一些使用 QtWebkit 呈现的软件转换为 PDF 的 HTML 文档(不确定是哪个版本)。

目前,文档有特定的标签来拆分为列和页面 - 因此,每当措辞发生变化时,移动这些标签以适应列和页面是一个手动耗时的过程。

谁能提供一种方法,让文本在到达当前容器底部时自动换行到下一列/页面(视情况而定)?

QtWebkit 支持的任何 HTML、CSS 或 JS 都可以(假设它在 PDF 转换器中工作)。

(我已经在 CSS3 中测试了 webkit-column-* 并且看起来 QtWebkit 确实支持这个。)

为了让事情更精彩,还需要:
- 在每页的顶部放置一个页眉,第 X 页的 Y 编号;
- 如果是奇数页,则在末尾添加一个空白页(不带页眉);
- 有能力说“不要在这个块内打断”或“不要在这个标题之后打断”

我已经举了一些简单的例子 initial markuptarget markup 来帮助解释我想要做什么。

(实际文档远比这复杂,但在攻击真实文档之前,我需要一个简单的概念验证。)

有什么建议吗?


更新:
我有一个使用 Aaron 的“填补”建议的部分可行的解决方案 - 我稍后会发布更多详细信息。

【问题讨论】:

  • 彼得,你有更新吗?这对我正在从事的项目很有帮助。谢谢!
  • 啊,抱歉,看起来我从未发布过这些细节 - 我想我当时被拉到了另一个项目。无论如何,我会看看我能不能找到我要去的地方,并会在一两天内更新 - 如果我在星期四之前还没有发布任何东西,请再次提醒我!

标签: javascript css webkit pagination


【解决方案1】:

创建一个包含单页和单列中的所有文本的文档。使用 JavaScript 将文本切割成部分。

使用像素坐标来定位不再适合的段落/元素。将它和下面的所有内容移动到下一个col。如果一个“页面”已经有两个“col”div,则开始一个新页面。

创建所有页面后,对页面进行计数和编号。修复偶数/奇数等问题。

需要一些时间,但它是自动的。

另一种方法是将所有内容添加到“源”div 并将项目移动到 col div 直到它已满并与下一个 col 重复。

看看 Prototype 或 jQuery;他们应该给你很多工具来移动文档中的东西。

[编辑] 我建议不要只依赖 jQuery 函数,而是创建一个或两个对象来跟踪当前页面和当前列等。这些为您提供了稳定的基础,您可以从中触发辅助方法。

【讨论】:

  • 是的,这就是我正在尝试做的事情,但是切割成部分是我卡住的地方 - jQuery 试图“有帮助”,我目前卡在如何插入下一个 col/page... 将添加我拥有的代码。
  • 嗯,“填满”方法似乎应该更容易做 - 我会试试看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-01
  • 2015-09-17
  • 2020-07-12
  • 1970-01-01
  • 1970-01-01
  • 2017-08-06
相关资源
最近更新 更多