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?
7 answers
- iText; obecnie iText jest biblioteką komercyjną, najnowsza wersja nie jest już za darmo
- 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)
- PDFBox; wydaje się być najlepszą alternatywą, chociaż nie pracowałem z nim w dużych projektach
- 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.
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.
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.
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.
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 .Możliwość wypełniania danych graficznych (generowane kody kreskowe)
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.
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.
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
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
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