2008-10-25 34 views
40

Czy ktoś wie, czy możliwe jest przekonwertowanie strony HTML (URL) do pliku PDF za pomocą iText?Używanie iText do konwersji HTML na PDF

Jeśli odpowiedź brzmi „nie” niż to jest OK, a ponieważ będę przestać marnować swój czas próbuje się dogadać i po prostu spędzić trochę pieniędzy na jednym z wielu elementów, które wiem, że mogę :)

Z góry dziękuję za odpowiedzi!

+5

UPDATE: iText robi konwersji HTML do PDF, ale to wsparcie stylów jest rzadki. Wersja 5.0.6 została wydana w lutym 2011 r. I obejmowała przegląd powiązanego kodu z niewielką widoczną zmianą zachowania. Kolejne wydanie ma na celu znaczne ulepszenie funkcjonalności HTML-> PDF. –

+1

rzeczywiście sprawdź: [xmlworker] (https://sourceforge.net/projects/xmlworker/) dodatek do iText, obsługuje więcej CSS. – Redlab

+0

AKTUALIZACJA: Znaleziono ten nowszy wątek, który podsumowuje bardzo dobrze bieżące opcje http://stackoverflow.com/questions/4055838/best-commercial-html-to-pdf-c-component – Mark

Odpowiedz

7

Skończyłem z wykorzystaniem ABCPdf z webSupergoo. Działa bardzo dobrze i za około 350 USD zaoszczędziło mi godziny i godziny na podstawie powyższych komentarzy. Jeszcze raz dziękuję Daniel i Bratch za twoje komentarze.

-1

Kiedy potrzebowałem konwersji HTML na PDF na początku tego roku, próbowałem wersji Winnowative HTML do konwertera PDF (myślę, że ExpertPDF to ten sam produkt). Udało się to świetnie, więc kupiliśmy licencję w tej firmie. Po tym nie wchodzę w to zbyt głęboko.

29

myślę, że to jest dokładnie to, czego szukaliśmy

http://today.java.net/pub/a/today/2007/06/26/generating-pdfs-with-flying-saucer-and-itext.html

http://code.google.com/p/flying-saucer

Podstawowym celem

latający spodek jest do renderuj spec-compli ant XHTML i CSS 2.1 na ekranie jako komponent Swing. Chociaż początkowo był przeznaczony do osadzania znaczników w aplikacjach na komputerach (takich jak iTunes Music Store), Flying Saucer został rozszerzony także o iText. Dzięki temu bardzo łatwo można renderować XHTML do plików PDF, a także do obrazów i ekranu. Flying Spodek wymaga wersji Java 1.4 lub wyższej.

+3

Link do latającego talerza (xhtmlrenderer) powinien być teraz: http: // code .google.com/p/flying-saucer/ –

+0

Czy ktoś wie, jak poprawić jakość obrazu w wygenerowanych plikach PDF? – user584397

+0

@ user584397 użytkownik większy obraz i skalować go, obraz jest osadzony w pliku PDF. –

0

HTMLWorker Skorzystaj itext za

Example

+1

'HTMLWorker' jest przestarzałe. Jego następcą, "XMLWorker", jest zachód słońca. Obecny stan techniki to iText 7 + pdfHTML. –

1

Odpowiedź na to pytanie jest właściwie dwojaki. Przede wszystkim musisz określić, co zamierzasz zrobić z renderowanym kodem HTML: zapisz go w nowym pliku PDF lub użyj go w innym kontekście renderowania (tj. Dodaj go do innego generowanego dokumentu).

Były to stosunkowo łatwo osiągnąć za pomocą ramy latający spodek, który można znaleźć tutaj: https://github.com/flyingsaucerproject/flyingsaucer

Ten ostatni jest rzeczywiście znacznie bardziej kompleksowy problem, który musi zostać podzielone dalej. Używając iText nie będziesz w stanie (przynajmniej banalnie) łączyć elementów iText (tj. Paragraph, Phrase, Chunk itd.) Z wygenerowanym HTML. Możesz zhackować się z tego, używając metody ContentByte 's i generując kod HTML do tego szablonu.

Jeśli z drugiej strony chcesz wydrukować wygenerowany kod HTML za pomocą znaków wodnych, dat itp., Możesz to zrobić za pomocą iText.

Ostatecznie: nie można w prosty sposób zintegrować renderowanego kodu HTML w innych kontekstach generujących PDF, ale można renderować HTML bezpośrednio do pustego dokumentu PDF.

+0

z iText pdfHTML, faktycznie istnieje metoda "renderElements", która robi dokładnie to, co uważasz za niemożliwe. Wypisuje składnię HTML do bloków elementów iText, takich jak akapit, tabela itp. –

3

Najprostszym sposobem zrobienia tego jest użycie pdfHTML. Jest to dodatek iText7, który konwertuje HTML5 (+ CSS3) do formatu pdf.

Kod jest dość prosta:

HtmlConverter.convertToPdf(
     "<b>This text should be written in bold.</b>",  // html to be converted 
     new PdfWriter(
      new File("C://users/mark/documents/output.pdf") // destination file 
     ) 
    ); 

Aby dowiedzieć się więcej, przejdź do http://itextpdf.com/itext7/pdfHTML

Powiązane problemy