Muszę automatycznie wygenerować plik PDF z istniejącego (X) dokumentu HTML. Pliki wejściowe (raporty) mają raczej prosty, oparty na tabelach układ, więc obsługa naprawdę wyszukanych elementów JavaScript / CSS prawdopodobnie nie jest potrzebna.
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 w systemach Windows.
Jednym ze sposobów na zrobienie tego, który jest wykonalny, ale nie zapewnia dobrej jakości wyników (przynajmniej po wyjęciu z pudełka), jest użycie 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ść pomieszany, a tekst wypływa z komórki tabeli.
Rzuciłem też okiem na Jrex, API Java do korzystania z silnika renderującego Gecko.
Czy istnieje sposób na pobranie wyrenderowanej strony z silnika renderującego Internet Explorer i automatyczne wysłanie jej do narzędzia PDF-Printer? Nie mam doświadczenia w programowaniu OLE w Windows, więc nie mam pojęcia, co jest możliwe, a co nie.
Masz pomysł?
źródło
Odpowiedzi:
Projekt renderera XHTML Flying Saucer obsługuje generowanie XHTML do PDF. Spójrz na przykład tutaj .
źródło
Czy próbowałeś WKHTMLTOPDF ?
Jest to proste narzędzie powłoki, implementacja WebKit typu open source. Oba są bezpłatne.
Ustawiliśmy tutaj mały samouczek
EDYCJA (2017):
Gdyby dziś miał coś zbudować, nie szedłbym już tą drogą.
Ale zamiast tego użyłby http://pdfkit.org/ .
Prawdopodobnie pozbawiając go wszystkich zależności nodejs, aby działał w przeglądarce.
źródło
Sprawdź iText ; jest to czysty zestaw narzędzi Java PDF, który obsługuje odczytywanie danych z HTML. Użyłem go ostatnio w projekcie, kiedy musiałem pobrać zawartość z naszego CMS i wyeksportować jako pliki PDF, i to wszystko było dość proste. Obsługa tagów CSS i stylów jest dość ograniczona, ale renderuje tabele bez żadnych problemów (chociaż nigdy nie udało mi się ustawić szerokości kolumn).
Tworzenie pliku PDF z HTML wygląda mniej więcej tak:
źródło
Jeśli masz fundusze, nic nie przebije Prince XML, jak pokazuje ten film
źródło
Tak działa ActivePDF , co jest dobre, oznacza, że wiesz, co otrzymasz, i faktycznie ma rozsądną obsługę 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 polecenia CSS podziału strony.
Niestety oprogramowanie ActivePDF jest bardzo frustrujące - ponieważ musi uruchamiać przeglądarkę IE w tle w celu konwersji, może działać dość wolno, a także nie jest szczególnie stabilne.
Obecnie w Becie jest nowa wersja, która ma być znacznie lepsza, ale tak naprawdę nie miałem okazji jej wypróbować, więc nie wiem, ile to ulepszeń.
źródło
Możesz użyć bezgłowego firefoxa z rozszerzeniem. Bieganie jest dość denerwujące, ale daje dobre wyniki.
Sprawdź tę odpowiedź, aby uzyskać więcej informacji.
źródło
Jeśli spojrzysz na boczny pasek swojego pytania, zobaczysz wiele powiązanych pytań ...
W twoim kontekście prostszą metodą może być zainstalowanie sterownika druku PDF, takiego jak PDFCreator, i wydrukowanie strony na tym wyjściu.
źródło
Amyuni WebkitPDF może być używany z JNI jako rozwiązanie tylko dla systemu Windows. To jest 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, które pobierają stamtąd elementy, konwertują je i przechowują w bazie danych lub systemie plików.
zastosowanie ma zwykłe wyłączenie odpowiedzialności
źródło