Porównaj te produkty do generowania PDF z Java podanymi wymaganiami wewnątrz: iText, Apache PDFBox lub FOP? [zamknięte]

Były pytania na ten temat, ale nie Ostatnio i technologia musiała iść do przodu od tego czasu.

Wymagania:

  • generowanie dokumentów pdf na podstawie predefiniowanego szablonu (mogę użyć formularzy pdf lub xsl-fo)
  • możliwość wypełniania danych tekstowych
  • możliwość wypełniania danych graficznych (generowane kody kreskowe)
  • Możliwość zmiany szablonu pdf w środowisku produkcyjnym bez poprawek (rekompilacji)
  • generowanie pliku pdf do zapisania w baza danych (jako blob) i / lub drukowane
  • open source / free

Zakładane opcje to iText, PDFBox, FOP, coś jeszcze? Jakie są zalecenia oparte na powyższych wymaganiach?

Author: topchef, 2011-07-08

7 answers

  1. iText; obecnie iText jest biblioteką komercyjną, najnowsza wersja nie jest już za darmo
  2. FOP; dużo pracowałem z FOP. Jest to dość zasobochłonne (Java > XML > XSLT > PDF) i złożone pliki PDF stają się koszmarem (może spowodować XSLTs z 20k+ LoC)
  3. PDFBox; wydaje się być najlepszą alternatywą, chociaż nie pracowałem z nim w dużych projektach
  4. nie sprawdziĺ ' em jeszcze latajÄ ... cego Spodka

Podsumowując, dałbym PDFBox spróbować. W zależności od kodu kreskowego wymagania może być konieczne wprowadzenie kodu kreskowego (czcionki) do pliku PDF lub rozpowszechnienie czcionki klientom - zajmij się tymi problemami.

 29
Author: home,
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-07-08 14:33:43

Wykonałem projekt z latającym spodkiem http://code.google.com/p/flying-saucer / który jest oparty na iText. Jest darmowy, łatwy w użyciu, ma świetne wsparcie dla CSS i ma ładne open source.

 6
Author: Brian Hoover,
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-07-08 14:27:18

Myślę, że Twoje kryteria mogą być spełnione zarówno z iText, jak i Apahce FOp, ale tutaj masz kilka dodatkowych kryteriów:

  • licencjonowanie: FOP jest oparty na licencji Apache i dlatego "przyjazny" również do użytku komercyjnego
  • flexbility: niskopoziomowe API, takie jak iText, jest bardziej elastyczne niż wysoki poziom FOP
  • narzędzia wizualne: jest jeden projektant dla FOP tutaj .
  • model programowania: iText opiera się na programowaniu API, podczas gdy FOP wymaga szablonu XSLFO i mniej programowanie.
  • zastrzeżony vs standard. Apache FOP opiera się na standardzie i dlatego jest niezależny od dostawcy, podczas gdy iText jest zastrzeżonym API
  • Performace: mówi się, że FOP jest bardziej intensywny obliczeniowo. zależy to oczywiście od tego, jakie są docelowe pliki PDF. Nigdy nie miałem problemu z używaniem FOP.

Nie używałbym Pdfboxa, jest on dobry do czytania i modyfikowania istniejącego pliku PDF, ale tworzenie pliku od podstaw za pomocą Pdfboxa może być dużo pracy.

 6
Author: user986280,
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-12-10 16:13:50

Jestem trochę stronniczy (committer), ale sugeruję to.

Generowanie dokumentów pdf na podstawie predefiniowanego szablonu (mogę użyć formularzy pdf lub xsl-fo)

Formularze PDF: Sprawdź

Możliwość wypełniania danych tekstowych

Formularze PDF, sprawdź. Można również wykonać układ programowy.

Możliwość wypełniania danych graficznych (generowane kody kreskowe)

Sprawdzam. Biorąc pod uwagę znane położenie (które może być " lokalizacją tego szczególna adnotacja"), iText narysuje dla Ciebie kod kreskowy, który poda ci symbolikę i wartość. Możesz wywnioskować listę obsługiwanych symboli z stałych wymienionych tutaj .

Do tego typu rzeczy używam pól przycisków z wyglądem "tylko ikony". "Ikona" To dowolne instrukcje rysowania PDF lub obraz. Kod kreskowy iText stworzy PdfTemplate, który możesz wpchać do przycisku bez większych problemów.

Możliwość zmiany szablonu pdf w środowisko produkcyjne bez poprawek (rekompilacji)

Jeśli cały twój układ jest upieczony w szablonie PDF, a Twoje informacje "Kod kreskowy idzie tutaj" nie są mocno zakodowane w źródle, to jesteś złoty.

Generowanie pliku pdf do zapisania w bazie danych (jako blob) i/lub wydruku

PDF to PDF to PDF. Heck, z dodatkową pracą z twojej strony, możesz użyć iText do budowania plików PDF/A. "A" jak Archiwum.

Otwórz źródło / free

Open Source: Tak. v2. 1. 7 była ostatnią wersją używającą MPL. Od 5.x, wszystkie wydania iText były pod AGPL. Tak, iText został pominięty z 2.1.7 do 5.0, aby zsynchronizować numerację wersji pomiędzy iText i iTextSharp.

Nie do końca" małe f " za darmo, ale Wersja 2.1.7 nie jest tak trudna do zdobycia. OTOH, to sierota-ware, bez konserwacji. Bądź świadomym konsumentem.

 3
Author: Mark Storer,
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-07-11 22:19:52

To zależy od tego, jak dokładnie chcesz utworzyć plik PDF. FOP działa z XML, IText pozwala tworzyć programowo z Javy.

 2
Author: mark stephens,
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-07-08 15:19:54

Kolejny kciuk w górę dla latającego spodka. Działa całkiem dobrze i jest łatwy w użyciu, jeśli znasz html i css.

To, co tak naprawdę nie jest udokumentowane, to jak uzyskać dostęp do wbudowanych funkcji kodów kreskowych iTexts. Można to jednak łatwo osiągnąć. Umieściłem tutaj krótki tutorial: http://andreas.haufler.info/2012/12/generating-barcodes-in-pdfs-with-flying.html

 1
Author: Andreas Haufler,
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-12-19 11:04:10

Nikt nie mówi o BFO (Big faceless) choć to reklama

 -1
Author: JunLei,
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-10-06 11:10:42