如何通过 wkhtmltopdf 将 HTML 转换为无限的单页 PDF?

如何通过 wkhtmltopdf 将 HTML 转换为无限的单页 PDF?

目前,当从给定的 URL 转换 PDF 时,例如:

wkhtmltopdf http://superuser.com/ superuser.pdf

它由多张 A4 页面组成(因此有时图像会被剪切在页面中间)。

我的问题是:

如何将 HTML 页面转换为高度无限的 PDF 格式?

我的偏好是您仍然应该拥有可编辑/可搜索的文档,而不仅仅是静态图像。


我已经尝试过的:

答案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

相关内容