Como converter HTML em PDF de uma página sem fim via wkhtmltopdf?

7

Atualmente, ao converter o PDF de uma determinada URL, como:

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

onde consistem várias páginas A4 (por isso, as imagens são cortadas no meio da página).

Minha pergunta é:

Como faço para converter uma página HTML em formato PDF onde a altura é infinita?

Minha preferência é que você ainda tenha um documento editável / pesquisável, não apenas uma imagem estática.

O que eu já tentei:

por kenorb 18.08.2015 / 12:30

3 respostas

2

O wkhtmltopdf 0.9.6 Manual documenta este parâmetro:

    --page-height      <unitreal>      Page height (default unit millimeter)

Portanto, definir uma página muito longa pode ser feito por meio de:

--page-height 10000cm
--page-height 100m

que ambos definem uma página de altura de 100 metros (Eu menciono ambos no caso de seu wkhtmltopdf não suportar m ).

Não usando wkhtmltopdf , não sei se existe algum limite superior para página-altura, mas você pode encontrar isso empiricamente.

Além disso, você pode tentar adicionar --disable-smart-width (a largura não é um erro) e tente no momento o menos ambicioso --page-height 100cm .

Em esta página man , há um comentário sobre disable-smart-width que só está disponível usando o QT corrigido.

Há também outro comentário:

On the wkhtmltopdf website you can download a static version of wkhtmltopdf at http://code.google.com/p/wkhtmltopdf/downloads/list. This static binary will work on most systems and comes with a build in patched QT.

O projeto foi movido outro lugar , então você pode procurar por essa versão, ou perguntar nos fóruns.

    
por 02.10.2015 / 07:54
1

Você deve fazer isso abaixo:

$ 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

O Convert é realizado a partir do pacote ImageMagick. A desvantagem de usar o método acima é que a saída PDF teria uma imagem estática.

    
por 01.10.2015 / 05:50
1

Olhando novamente dentro do código , parece que você ainda não consegue selecionar um infinito rolo.

Você pode simplesmente usar o comando imagemagick mogrify com a opção -append no arquivo baixado (ou até mesmo + anexado se você deseja anexá-los horizontalmente).

wkhtmltopdf http://superuser.com/ superuser.pdf
mogrify -append superuser.pdf

de man mogrify

-append
append an image sequence top to botto (use +append for left to right)

Se você quiser criar um novo arquivo, poderá usar o mesmo pacote convert .

convert -density 200 superuser.pdf -append superuser.vertical.pdf
    
por 01.10.2015 / 12:39