Jak przekonwertować HTML na niekończący się jednostronicowy PDF za pomocą wkhtmltopdf?

7

Obecnie podczas konwersji pliku PDF z podanego adresu URL, np .:

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

gdzie składa się z wielu stron A4 (czasami zdjęcia są cięte na środku strony).

Moje pytanie brzmi:

Jak przekonwertować stronę HTML do formatu PDF, gdzie wysokość jest nieograniczona?

Preferuję, abyś nadal posiadał edytowalny / przeszukiwalny dokument, a nie tylko statyczny obraz.


Co już próbowałem:

kenorb
źródło

Odpowiedzi:

2

The wkhtmltopdf 0.9.6 Manual dokumentuje ten parametr:

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

Dlatego zdefiniowanie niezwykle długiej strony można wykonać za pomocą:

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

które definiują stronę o wysokości 100 metrów (Wspominam zarówno w przypadku, gdy twój wkhtmltopdf nie obsługuje m ).

Nie używam wkhtmltopdf, Nie wiem, czy jest jakiś górny limit wysokość strony, ale można to znaleźć empirycznie.

Dodatkowo możesz spróbować dodać --disable-smart-width (szerokość nie jest błędem) i spróbuj na razie mniej ambitnych --page-height 100cm.

W ta strona podręcznika jest komentarz na ten temat disable-smart-width że jest dostępny tylko przy użyciu poprawionego QT.

Jest jeszcze inny komentarz:

Na stronie wkhtmltopdf możesz pobrać statyczną wersję wkhtmltopdf na stronie http://code.google.com/p/wkhtmltopdf/downloads/list . Ten statyczny plik binarny będzie działał na większości systemów i zawiera kompilację poprawionego QT.

Projekt został przeniesiony gdzie indziej , więc możesz tam polować na taką wersję lub pytać na forach.

harrymc
źródło
Przetestowany: wkhtmltopdf http://superuser.com/ superuser.pdf --page-height 100m, ale nie działa zgodnie z oczekiwaniami, ponieważ nadal widzę 3 oddzielne strony. Testowane z v0.12.2.1.
kenorb
Spróbuj dodać --disable-smart-width (szerokość nie jest błędem) i spróbuj na razie mniej ambitnych --page-height 100cm.
harrymc
Próbowałem już, ale to mówi: Unknown long argument --disable-smart-width.
kenorb
To odnosi się do innej wersji wkhtmltopdf. Moją ostatnią sugestią jest przetestowanie wersja beta w tym sprawdzanie, czy dodano odpowiedni parametr wywołania (a zwłaszcza wyłączenie czegokolwiek za pomocą „inteligentnego”). Jeśli nie, poproś w wkhtmltopdf Wsparcie .
harrymc
Przetestowano z najnowszą wersją dev ze źródeł ( 0.12.3-dev-8f03630 ), opcja nadal nie działa w OSX (mówiąc, że jest nieznana). Jedyną referencją dla tej opcji jest imagearguments.cc. Może działa tylko dla obrazów (nie PDF)?
kenorb
1

Powinieneś to zrobić jak poniżej:

$ 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

Konwersja jest wykonywana z pakietu ImageMagick. Wadą stosowania powyższej metody jest to, że wyjście PDF miałoby statyczny obraz.

Wayne Walker
źródło
1

Patrząc ponownie wewnątrz kodu wygląda na to, że nadal nie możesz wybrać nieskończonego rzutu.

Możesz więc po prostu użyć imagemagick dowództwo mogrify z opcją -append na pobranym pliku (lub nawet + dołącz, jeśli chcesz dołączyć je poziomo).

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

z man mogrify

-dodać
dołącz sekwencję obrazów od góry do dołu (użyj + dołącz dla od lewej do prawej)

Jeśli chcesz utworzyć nowy plik, możesz użyć tego samego pakietu convert.

convert -density 200 superuser.pdf -append superuser.vertical.pdf
Hastur
źródło
Próbowałem, ale wyjściowy plik PDF zawiera statyczny obraz niskiej jakości. Próbowałem też dodać: -units PixelsPerInch -density 300 lub -units PixelsPerInch -resample 300, ale wyjściowy plik PDF jest nadal obrazem niskiej jakości.
kenorb
The convert polecenie jest naprawdę sensowne dla położenia parametrów. Możesz spróbować convert -density 300 supersuser.pdf -append su.vertical.pdf... lub nawet bardziej wysokie wartości gęstości i parametry. (Daj mi znać)
Hastur