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
8 answers
The Flying Saucer Projekt XHTML renderer ma wsparcie dla wysyłania XHTML do PDF. Spójrz na przykład tutaj .
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.
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();
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
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ń.
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.
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
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.
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