Konwersja plików HTML do PDF [zamknięty]

Muszę automatycznie wygenerować plik PDF z exisiting (x) HTML-dokumentu. Pliki wejściowe (raporty) używają raczej prostego, opartego na tabelach układu, więc wsparcie dla naprawdę fantazyjnych rzeczy JavaScript / CSS prawdopodobnie nie jest potrzebne.

Ponieważ jestem przyzwyczajony do pracy w Javie, preferowane jest rozwiązanie, które można łatwo wykorzystać w projekcie java. Musi jednak działać tylko na systemach windows.

Jeden sposób, aby to zrobić, który jest wykonalny, ale nie produkuje dobrej jakości wyjście (przynajmniej z box) używa CSS2XSLFO i Apache FOP do tworzenia plików PDF. Problem, który napotkałem, polegał na tym, że podczas gdy atrybuty CSS są ładnie konwertowane, układ tabeli jest dość Pokręcony, z tekstem wypływającym z komórki tabeli.

Rzuciłem też okiem na Jrex, Java-API do korzystania z silnika renderującego Gecko.

Czy Jest jakiś sposób, aby pobrać renderowaną stronę z silnika renderującego internet explorer i wysłać ją automatycznie do Narzędzia drukarki PDF? Nie mam doświadczenia. w programowaniu OLE w windows, więc nie mam pojęcia co jest możliwe, a co nie.

Masz pomysł?

EDIT : FlyingSaucer/iText wygląda bardzo obiecująco. Spróbuję się z tym pogodzić.

Dzięki za wszystkie odpowiedzi

Author: bluish, 2009-03-11

8 answers

The Flying Saucer Projekt XHTML renderer ma wsparcie dla wysyłania XHTML do PDF. Spójrz na przykład tutaj .

 66
Author: Mark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-23 14:07:25

Próbowałeś WKHTMLTOPDF ?

Jest to proste narzędzie powłoki, implementacja open source WebKit. Oboje są wolni.

Ustawiliśmy mały tutorial tutaj

Edytuj( 2017 ):

Gdyby miało coś dzisiaj zbudować, to już bym nie szedł tą drogą.
Ale użyłby http://pdfkit.org / zamiast tego.
Prawdopodobnie pozbawia go WSZYSTKICH zależności od nodejs, aby działał w przeglądarce.

 40
Author: Mic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-23 11:06:04

Sprawdź iText; jest to czysty Java PDF toolkit, który ma wsparcie dla odczytu danych z HTML. Używałem go ostatnio w projekcie, kiedy musiałem pobrać zawartość z naszego CMS i eksportować jako pliki PDF, i wszystko było dość proste. Obsługa znaczników CSS i style jest dość ograniczona, ale renderuje tabele bez żadnych problemów(nigdy nie udało mi się ustawić szerokości kolumn).

Tworzenie pliku PDF z HTML przebiega tak:

Document doc = new Document(PageSize.A4);
PdfWriter.getInstance(doc, out);
doc.open();
HTMLWorker hw = new HTMLWorker(doc);
hw.parse(new StringReader(html));
doc.close();
 39
Author: fred-o,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-11 09:32:24

Jeśli masz fundusze, nic nie przebije Prince XML Jak ten film pokazuje

 3
Author: Ólafur Waage,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-11 09:17:10

Czy Jest jakiś sposób na złapanie renderowana strona z Internetu explorer Rendering engine i wysłać go do Narzędzia PDF-Printer automatycznie?

Oto jak ActivePDF działa, co jest dobre, oznacza, że wiesz, co dostaniesz, i faktycznie ma rozsądne wsparcie stylizacji.

Jest to również jeden z niewielu pakietów, które znalazłem (patrząc kilka lat wstecz), który faktycznie obsługuje różne CSS łamania stron polecenia.


Niestety, oprogramowanie ActivePDF jest bardzo frustrujące - ponieważ musi uruchomić przeglądarkę IE w tle dla konwersji może być dość powolne, a także nie jest szczególnie stabilne.

Obecnie jest nowa wersja w wersji Beta, która ma być znacznie lepsza, ale nie miałem okazji jej wypróbować, więc nie wiem, ile to ulepszeń.

 2
Author: Peter Boughton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-11 09:47:05

Możesz używać Bezgłowego Firefoksa z rozszerzeniem. To jest dość denerwujące, aby uruchomić, ale to przynosi dobre wyniki.

Sprawdź ta odpowiedź Aby uzyskać więcej informacji.

 1
Author: rojoca,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:13

Amyuni WebkitPDF może być używany z JNI jako rozwiązanie tylko dla Windows. Jest to biblioteka konwersji HTML na PDF / XAML, bezpłatna do użytku komercyjnego i niekomercyjnego.

Jeśli pliki wyjściowe nie są potrzebne od razu, dla lepszej skalowalności może być lepiej mieć kolejkę i kilka procesów w tle pobierających stamtąd elementy, konwertujących je i przechowujących w bazie danych lub systemie plików.

zwykłe zastrzeżenie dotyczy

 0
Author: yms,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-26 19:08:55

Jeśli spojrzysz na pasek boczny swojego pytania, zobaczysz wiele powiązanych pytań...

W Twoim kontekście prostszą metodą może być zainstalowanie sterownika wydruku PDF, takiego jak PDFCreator i wydrukowanie strony na tym wyjściu.

 -1
Author: PhiLho,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-11 09:34:18