目前,当从给定的 URL 转换 PDF 时,例如:
wkhtmltopdf http://superuser.com/ superuser.pdf
它由多张 A4 页面组成(因此有时图像会被剪切在页面中间)。
我的问题是:
如何将 HTML 页面转换为高度无限的 PDF 格式?
我的偏好是您仍然应该拥有可编辑/可搜索的文档,而不仅仅是静态图像。
我已经尝试过的:
我找不到有效纸张尺寸为此(这似乎不管用),
我已经看到了:根据内容大小自动调整页面大小在 GitHub 上
答案1
这wkhtmltopdf 0.9.6 手册记录此参数:
--page-height <unitreal> Page height (default unit millimeter)
因此,可以通过以下方式定义一个非常长的页面:
--page-height 10000cm
--page-height 100m
两者都定义了 100 米高的页面(我提到这两者都是为了防止您的 wkhtmltopdf 不支持m
)。
不使用wkhtmltopdf
,我不知道页面高度是否有上限,但你可以根据经验找到。
此外,您可以尝试添加--disable-smart-width
(宽度不是错误)并尝试暂时不那么雄心勃勃的--page-height 100cm
。
在本手册页有评论说它disable-smart-width
只能使用修补的 QT。
还有另一条评论:
在 wkhtmltopdf 网站上,您可以下载 wkhtmltopdf 的静态版本http://code.google.com/p/wkhtmltopdf/downloads/list。此静态二进制文件可在大多数系统上运行,并附带内置的修补 QT。
项目已搬迁别处,因此您可以在那里寻找这样的版本,或者在论坛中提问。
答案2
您应该按照如下方式进行操作:
$ wkhtmltoimage http://superuser.com/ superuser.png
loaded the Generic plugin
Loading page (1/2)
Rendering (2/2)
Warning: Received createRequest signal on a disposed ResourceObject's NetworkAccessManager. This might be an indication of an iframe taking too long to load.
Done
$ geo=$(file superuser.png | awk '{print $5"x"$7}' | sed -e 's/,//')
$ convert superuser.png -page $geo superuser.pdf
转换由 ImageMagick 包执行。使用上述方法的缺点是 PDF 输出将具有静态图像。
答案3
再次回顾在代码中看来您仍然无法选择无限滚动。
因此,您只需使用图像魔法mogrify
使用下载文件上的选项命令-append
(或者如果您想水平附加它们,甚至可以使用 +append)。
wkhtmltopdf http://superuser.com/ superuser.pdf
mogrify -append superuser.pdf
从man mogrify
-附加
将图像序列从上到下附加(使用 +append 表示从左到右)
如果您想创建一个新文件,您可以使用同一套件中的文件convert
。
convert -density 200 superuser.pdf -append superuser.vertical.pdf