Как преобразовать HTML в бесконечный одностраничный PDF через wkhtmltopdf?

7105
kenorb

В настоящее время при конвертации PDF с данного URL, например:

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

где он состоит из нескольких страниц формата А4 (поэтому иногда изображения обрезаются посередине страницы).

Мой вопрос:

Как я могу преобразовать HTML-страницу в формат PDF, где высота бесконечна?

Я предпочитаю, чтобы у вас все еще был редактируемый / доступный для поиска документ, а не просто статичное изображение.


Что я уже пробовал:

7

3 ответа на вопрос

2
harrymc

Руководство 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.

Проект перенесен в другое место, так что вы можете охотиться там за такой версией или спрашивать на форумах.

Протестировано: `wkhtmltopdf http://superuser.com/ superuser.pdf - page-height 100m`, но, похоже, не работает должным образом, так как я все еще вижу 3 отдельные страницы. Протестировано с v0.12.2.1. kenorb 9 лет назад 0
Попробуйте добавить `--disable-smart-width` (ширина не является ошибкой) и на данный момент попробуйте менее амбициозный` --page-height 100cm`. harrymc 9 лет назад 0
Я уже пробовал, но он говорит: `Неизвестный длинный аргумент --disable-smart-width`. kenorb 9 лет назад 0
Затем это относится к другой версии wkhtmltopdf. Мое последнее предложение - протестировать [бета-версию] (http://wkhtmltopdf.org/downloads.html), в том числе посмотреть, был ли добавлен какой-либо соответствующий параметр вызова (и особенно отключить что-либо с помощью «smart»). Если нет, спросите в [wkhtmltopdf Spport] (http://wkhtmltopdf.org/support.html). harrymc 9 лет назад 0
Протестированная с последней версией dev из источников (`0.12.3-dev-8f03630`), опция все еще не работает в OSX (говоря, что она неизвестна). Единственная ссылка на этот параметр находится в [`imagearguments.cc`] (https://github.com/wkhtmltopdf/wkhtmltopdf/wlob/7f74d893635d275f9450bf5f12c454a9c27672bd/src/image/imagearguments.cc). Может быть, это работает только для изображений (не PDF)? kenorb 9 лет назад 0
1
Wayne Walker

You should do it as below:

$ 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 '' | sed -e 's/,//') $ convert superuser.png -page $geo superuser.pdf 

Convert is performed from the ImageMagick package. The disadvantage of using the method above is that the PDF output would have a static image.

1
Hastur

Looking again inside the code it seems you still cannot select an infinite roll.

So you can simply use the imagemagick command mogrify with the option -append on the downloaded file (or even +append if you want to append them horizontally).

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

from man mogrify

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

If you want to create a new file you can use from the same suite convert.

convert -density 200 superuser.pdf -append superuser.vertical.pdf 
Я пробовал, но выходной PDF содержит статическое изображение низкого качества. Я также попытался добавить: `-units PixelsPerInch -density 300` или` -units PixelsPerInch -resample 300`, но выходной PDF по-прежнему является изображением низкого качества. kenorb 9 лет назад 0
Команда `convert` действительно чувствительна к положению параметров. Вы можете попробовать `convert -density 300 supersuser.pdf -append su.vertical.pdf` ... или даже более высокие значения плотности и параметры. (Дай мне знать) Hastur 9 лет назад 0

Похожие вопросы