2011-09-08 27 views
42

Powiel możliwe:
PDF Generation Library for JavaTworzenie PDF z Java

pracuję nad programem faktury dla lokalnej firmy księgowej. Jaki jest dobry sposób na utworzenie pliku PDF z Javą? Dobra biblioteka? Jestem całkowicie nowy w eksporcie plików PDF (w dowolnym języku).

+0

Możliwy duplikat [Lista konwerterów HTML na PDF] (http://stackoverflow.com/questions/3178448/list-of-html-to-pdf-converters), o którym mowa w [Konwersja plików HTML na PDF ] (http://stackoverflow.com/questions/633780/converting-html-files-to-pdf). – trashgod

Odpowiedz

65

Wolę wyprowadzanie moich danych w formacie XML (używając Castor, XStream lub JAXB), a następnie przekształcenie go przy użyciu arkusza stylów XSLT do XSL-FO i czynią to z Apache FOP w formacie PDF. Do tej pory pracowałem dla 10-stronicowych raportów i 400-stronicowych podręczników. Zauważyłem, że jest to bardziej elastyczne i łatwiejsze do utworzenia niż generowanie plików PDF w kodzie za pomocą iText.

+0

Jak szybko można przekonwertować podręcznik 400 stron na format PDF? Użyłem iText, ale dla niektórych z naszych dużych dokumentów jest zbyt wolny. –

+0

Niestety, zrobiłem to w latach 2005-2007, ale IIRC było podsekundą dla prostego, 10-stronicowego raportu (z buforowanym arkuszem stylów) i dziesiątkami sekund dla bardziej złożonego 400-stronicowego raportu. Czy buforuj sparsowany arkusz stylów XSL, gdy potrzebujesz generować takie same/podobne raporty z różnymi danymi - to daje całkiem spore wsparcie. –

+0

Mogę również polecić Velocity do wysyłania danych do xml. –

29

Poniżej przedstawiono kilka bibliotek do tworzenia PDF z Java:

  1. iText
  2. Apache PDFBox
  3. BFO

Użyłem iText dla genarating pdf z odrobiną bólu w przeszłość.

Lub możesz spróbować użyć FOP: FOP jest formaterem XSL napisanym w Javie. Jest używany w połączeniu z silnikiem transformacji XSLT do formatowania dokumentów XML w formacie PDF.

+14

Na stronie iText przeczytałem, że ich licencja AGPL wymaga od ciebie "dystrybucji całego kodu źródłowego, w tym własnego produktu, w tym, jeśli jest to aplikacja internetowa", między innymi. Wydaje się być całkowicie nie do przyjęcia dla żadnego komercyjnego projektu. – mvmn

+0

@mvmn: Możesz kupić komercyjną licencję. – Thilo

+0

Lub możesz użyć iText 1.3, który jest GNU Affero General Public License v3 –

13

Inną alternatywą może być JasperReports: JasperReports Library. Korzysta z samego iText i jest czymś więcej niż biblioteką PDF, o którą prosiłeś, ale jeśli pasuje do twoich potrzeb, wybrałbym go.

Po prostu pozwala na projektowanie raportów, które można wypełniać w czasie wykonywania. Jeśli używasz custom datasource, możesz być w stanie łatwo zintegrować JasperReports z istniejącym systemem. Pozwoli to zaoszczędzić Ci wszystkich kłopotów związanych z układaniem, np. kiedy faktury obejmują więcej stron, gdzie każda ze stron powinna mieć stopkę i tak dalej.