【发布时间】:2022-10-23 22:04:01
【问题描述】:
我正在尝试使用 pikepdf 为 pdf 创建一种分页功能。
给定一些垂直位置(图像中的灰色虚线),我想将页面分成两页。我想保持页面大小并将行下的元素移动到下一页的顶部。
我基本上需要做3件事:
- 在页面上列出元素
- 查找给定元素的位置
- 在页面周围移动元素
我正在努力在 pikepdf 文档页面上找到相关文档。有人能指出我正确的方向吗?
【问题讨论】:
-
qpdf 不是为此类模块设计的,因此您需要编写每个操作的脚本,添加空白页面(使用 qpdf 不容易,它需要一个虚拟页面github.com/qpdf/qpdf/issues/753#top),因此您需要知道页面前后的大小。好吧,如果乱七八糟也可以,现在第 1 页的内容需要在第 2 页上复制,参见 overstamp understamp,现在对于困难的部分,编辑第 1 页的下部以删除所有不需要的部分,并同样删除第 2 页的顶部,现在对于棘手的一点,将第 2 页向下移动,以便内容位于顶部。
-
@KJ 我想了很多。我的想法是只复制页面(插入列表非常简单),删除不同的部分并移动元素。既然我已经熟悉了 pdf 上的一些细节,那么您将页面本身向下移动而不是内容向上移动的想法似乎是一个更好的解决方案。还有其他图书馆更适合这种工作吗?
-
嗯,liftNshift 的问题是所有库中的一个常见问题,因为一旦将铅类型转换为 XY,重复页面上的两次铅类型最容易解决,因为将较轻的纸张移动到一张纸上(如上)。尝试为每个字母调整第二张纸的 Y 值,最简单的意思是库需要重写每个文本行、矢量等。这与将文本从第 1 页的低 Y 重排到第 2 页顶部的高 Y 一样困难,PDF 不是旨在使用现代 HTML 重排。所以替代方案是 UNpage 进入 htm 并重新拆分(不推荐)