Przejdź do zawartości

iText

Z Wikipedii, wolnej encyklopedii

iTextwolna biblioteka dla programistów, która umożliwia tworzenie i manipulowanie dokumentami w formacie PDF, w języku Java. Oprogramowanie iText zostało stworzone przez Bruno Lowagie, Paulo Soares i innych. Z raportu Ohloh wynika, że od 2001 roku, w wyniku zaangażowania 26 osób w budowę iText wlicza się więcej niż 10 tys. działań oraz milion linii kodu[1]. iText posiada rozwiniętą bazę kodów, wspieraną przez znaczącą grupę deweloperów ze stałą liczbą Y-O-Y użytkowników[2]. Używając modelu COCOMO i licząc w roboczogodzinach, stworzenie takiej bazy zabrałoby to średnio 250 lat starań, zaczynając od pierwszego działania w listopadzie 2000[3].

Począwszy od wersji 5.0.0 (dostępnej w grudniu 2009), iText został objęty licencją Affero (AGPL) w wersji 3. Wcześniejsze wersje biblioteki iText (Java do 2.1.7 i C# do 4.1.6) zostały wydane na licencji MPL oraz LGPL. iText jest również dostępny jako oprogramowanie zamknięte, na zasadach określonych przez iText Software Corp. iText® jest znakiem zarejestrowanym przez 1T3XT BVBA.

Do tej pory zostały wydane dwie książki poświęcone bibliotece iText, których autorem jest pierwotny jej twórca, Bruno Lowagie. Pierwsza wersja, ang. „iText in Action”, obejmuje opis funkcjonowania biblioteki iText i zawiera proste przykłady jej zastosowania. Druga edycja obejmuje nieco bardziej rozbudowane, praktyczne przykłady[4]. Kilka nowych książek jest w fazie rozwoju. Zostaną one opublikowane do pobrania bezpłatnie na Leanpub[5].

iText został przeportowany do środowiska platformy .NET pod nazwą iTextSharp. iTextSharp jest napisany w języku C# i posiada oddzielny kod, który jednak został zsynchronizowany z innymi wersjami iText. Wszystkie przykłady z drugiej edycji książki zostały przeportowane do C#.[6] Na stronie Code Project[7] można również znaleźć odnośnik do przykładów z kodu.Net.

Do końca 2013 roku 5 milionów użytkowników zainstalowało iText (Java) i iTextSharp (.NET) korzystając z SourceForge. W październiku 2013 liczba instalacji iText sięgnęła 3000 tygodniowo[8], natomiast iTextSharp 4000 tygodniowo[9].

Funkcjonalność[edytuj | edytuj kod]

iText jest biblioteką umożliwiającą m.in.:

  • Generowanie dokumentów PDF w aplikacjach webowych
  • Tworzenie PDF w sposób dynamiczny z dokumentów typu html, xml, txt lub baz danych zawierających dowolny rodzaj treści: tekst, obrazy, kody kreskowe, tabele, kolumny itd.;
  • Wybór z obszernej liczby czcionek (np. CJK, TTF, OTF) oraz różnego rodzaju typy kodowania;
  • Obsługę formatu PDF w aplikacjach webowych;
  • Dostępność funkcji interaktywnych: dodawanie zakładek, numerów stron, znaków wodnych, kodów kreskowych.
  • Dzielenie, łączenie i manipulowanie dokumentów PDF;
  • Automatyczne wypełnianie formularzy PDF;
  • Dodawanie elektronicznego podpisu;
  • Wsparcie dla używania polskich znaków[10], jak również znaków specyficznych dla języków azjatyckich (chiński, japoński, koreański), semickich (hebrajski, arabski) oraz wsparcie dla systemów pisma powiązanych z tymi językami, czyli pisanie od prawej do lewej lub z góry na dół;
  • Tworzenie i osadzanie skomplikowanych elementów graficznych w dokumencie, zarówno w sposób bezpośredni, jak i przy wykorzystaniu zewnętrznych bibliotek, które obsługują interfejs Graphics2D;
  • Modyfikację istniejących dokumentów: łączenie, przekręcanie, skalowanie wybranych stron;
  • Obsługę formularzy w dokumencie: tworzenie i przetwarzanie danych;
  • Dodawanie podpisów cyfrowych do pliku PDF;
  • Obsługę PDF-A;
  • Obsługę XFA.

Tworzenie biblioteki iText[edytuj | edytuj kod]

Tworzenie biblioteki iText przebiega w pięciu krokach[11][11]:

  1. Stworzenie obiektu reprezentującego dokument;
  2. Pobranie instalacji obiektu piszącego;
  3. Otwarcie dokumentu;
  4. Dodanie zawartości do dokumentu;
  5. Zamknięcie dokumentu.

Zastosowanie iText[edytuj | edytuj kod]

Zazwyczaj iText jest używany w projektach, które wymagają jednej z niżej wymienionych funkcji:

  • Zawartość nie jest dostępna „z góry”, jest ustalona w oparciu o wkład użytkownika lub bieżące informacje bazy danych;
  • Dokumenty PDF muszą zostać wyprodukowane automatycznie ze względu na ogrom dokumentów lub stron,
  • Dokument źródłowy wykorzystywany jest jako szablon do tworzenia dokumentu końcowego w procesie przetwarzania wsadowego.
  • Zawartość musi zostać spersonalizowana, na przykład imię klienta musi być wydrukowane na określonej liczbie stron.

Często te wymagania mogą zostać spełnione poprzez aplikacje internetowe, gdzie zawartość jest dynamicznie przesyłana online. Zazwyczaj ta informacja jest dostępna w formie HTML, jednak dla niektórych dokumentów PDF jest wybierany dla lepszej jakości drukowania, identycznej reprezentacji różnorodnych platform, bezpieczeństwa, lub aby zmniejszyć rozmiar dokumentu.

iText działa szybko i zajmuje mało pamięci[12]. Aplikacja iText ma duży rozmiar, jednak posiada wiele cech, które to rekompensują. Jedną z nich jest konsumpcja czasowa, produkcja PDF jest więcej niż 10 razy szybsza, niż w przypadku innych aplikacji. Czas procesowania CPU w przypadku iText jest mniejszy, niż przy użyciu innych zastosowań[13].

iText oferuje pomoc techniczną dla większości zaawansowanych opcji, takich jak: podpis PKI, 40- i 128-bitowe szyfrowanie, korekcja koloru, akroformy, PDF/X, zarządzanie kolorem poprzez profil ICC oraz kody kreskowe.

Standardy ISO[edytuj | edytuj kod]

Historia[edytuj | edytuj kod]

Pierwsza biblioteka PDF została stworzona przez Bruno Lowagie w zimie 1998 roku, jako wewnętrzny projekt na Uniwersytecie Gandawa w Belgii. Pomysł na powstanie biblioteki został zainicjowany potrzebą stworzenia oprogramowania w dziale administracji uniwersytetu w Gandawie. Biblioteka ta, znana pod nazwą rugPPdf, posiadała ograniczoną funkcjonalność polegającą jedynie na odczytywaniu i pisaniu dokumentów PDF. Poza tym oprogramowanie to było skomplikowane w obsłudze: aby je wykorzystywać, konieczna była wiedza o syntaktyce PDF, obiektach i operacjach[16].

W 1999 roku Bruno Lowagie zrezygnował z dalszego wykorzystywania rugPdf i stworzył nową bibliotekę, zawierającą zupełnie inny kod. Tak powstał iText. Oprogramowanie iText nie jest tak skomplikowane w użytku jak jego prototyp, m.in. użytkownicy nie muszą posiadać wiedzy w zakresie syntaktyki dokumentów PDF. Biblioteka iText została wydana jako wolne i otwarte oprogramowanie 14 lutego 2000 roku. W lecie 2000 roku Paulo Soares dołączył do projektu i jest obecnie jednym z głównych programistów, którzy przyczynili się do powstania najnowszych cech funkcjonalnych iText.

W 2006 roku została wydana pierwsza książka na temat iText pod angielskim tytułem „iText in Action, Creating and Manipulating PDF”, sprzedana w 11 500 egzemplarzach[17][18]. Matt Stephens wypowiada się o iText jako o „jednym z najlepiej strzeżonych sekretów Javy”[19].

W 2007 roku, w rankingu przeprowadzonym przez międzynarodowy magazyn SOA iText został wybrany jako jeden z 10 wolnych i otwartych rozwiązań, które firmy powinny używać[20]. James Gosling wyróżnił bibliotekę iText używając ją w nowej edycji Huckster[21]. The New York Times wykorzystuje iText do tworzenia wersji PDF artykułów ze swojej publicznej domeny[22].

iText stał się częścią wielu znanych produktów i usług, jak na przykład Eclipse BIRT, Jasper Reports, Red Hat JBoss Seam, Windward Reports, pdftk, i innych[23].

Pod koniec 2008 roku, iText stał się dostępny jako oprogramowanie zamknięte. Licencji na posiadanie biblioteki udziela firma iText Software Corp., która została utworzona na początku 2009 roku[24].

Ponad rok później ukazała się druga edycja książki “iText in Action”. Część merytoryczna jest niemalże identyczna jak w pierwszej wersji, natomiast część praktyczna została wzbogacona o nowe, „z życia wzięte” przykłady[25].

W 2011 roku, iText został zaprezentowany na Devoxx (Konferencja środowiska Java)[26].

W 2013 roku, iText Software Group został nominowany w rankingu najszybciej rozwijających się firm w krajach Beneluksu (Technology Fast 50 Award in Benelux). Firma zajęła 10-tą pozycję w Beneluksie i trzecią w Belgii[27][28][29][30].

Licencjonowanie

Wersje iText począwszy od 4.1.6 do 4.2.0 zostały objęte licencją MPL lub LGPL. Pozwolalało to na użycie tej biblioteki w produktach oprogramowania z zastrzeżonym kodem źródłowym. Z końcem 2009 roku, razem z wydaniem iText 5, licencja została zmieniona na Affero (wersja 3). Zgodnie z zasadami, na których opiera się ta licencja, projekty z zastrzeżonym kodem źródłowym mogą, za określoną cenę, dokonać zakupu komercyjnej licencji dla iText 5 lub też, bez zmian, kontynuować pracę z poprzednimi wersjami iText, objętymi mniej restrykcyjną licencją[31][32]. Mimo to, twórca iText ostrzega, że wcześniejsze wersje, niż iText 5 mogą zawierać części kodu, który nie był legalnie objęty licencją LGPL. Może to prowadzić do problemów związanych z piractwem medialnym[33]. Licencja AGPL nie jest zgodna z licencją GPL, mimo że biblioteka AGPL może zostać powiązana z programem GPL.

Przypisy[edytuj | edytuj kod]

  1.  : Ohloh commits summary. Ohloh.net, 2013-08-19. [dostęp 2013-10-26]. [zarchiwizowane z tego adresu (2013-10-23)]. (ang.).
  2.  : Ohloh iText overview page. Ohloh.net. [dostęp 2013-10-26]. [zarchiwizowane z tego adresu (2013-10-23)]. (ang.).
  3.  : Ohloh Estimated development cost. Ohloh.net, 2013-08-19. [dostęp 2013-10-26]. [zarchiwizowane z tego adresu (2013-10-23)]. (ang.).
  4. Book Review. thediningphilosopher.blogspot.be. [zarchiwizowane z tego adresu (2013-12-24)].. John Griffin.
  5. iText books on Leanpub. Leanpub.com. [dostęp 2013-10-26]. (ang.).
  6. port of the book examples to C#. Kuujinbo.info. [dostęp 2013-10-26]. [zarchiwizowane z tego adresu (2013-10-15)]. (ang.).
  7. iText on the Code Project. Codeproject.com. [dostęp 2013-10-26]. (ang.).
  8. iText®, a JAVA PDF library | SourceForge.net [online], sourceforge.net [dostęp 2017-11-15] (ang.).
  9. iTextSharp, a .NET PDF library | SourceForge.net [online], sourceforge.net [dostęp 2017-11-15] (ang.).
  10. Zarchiwizowana kopia. [dostęp 2013-12-21]. [zarchiwizowane z tego adresu (2013-12-24)].
  11. a b Zarchiwizowana kopia. [dostęp 2013-12-21]. [zarchiwizowane z tego adresu (2012-09-15)].
  12. Java Buzz Forum – iText [online], www.artima.com [dostęp 2017-11-15].
  13. Creating PDFs on Android – an evaluation | Stefan Fenz [online], stefan.fenz.at [dostęp 2017-11-15] (ang.).
  14. How to create PDF/A-3 using iText – PDF Association [online], www.pdfa.org [dostęp 2017-11-15] [zarchiwizowane z adresu 2016-09-07] (ang.).
  15. iText bringing PDF/UA support to Java Implementations – Duff Johnson Strategy & Communications [online], duff-johnson.com [dostęp 2017-11-15] (ang.).
  16. pdf: pdf adobe acrobat history [online], pdf-pdf.blogspot.be [dostęp 2017-11-15].
  17. Zarchiwizowana kopia. [dostęp 2013-12-21]. [zarchiwizowane z tego adresu (2014-03-27)].
  18. Informatie architectuur & usability | iStoire Services [online], www.istoire.be [dostęp 2017-11-15] [zarchiwizowane z adresu 2015-04-17] (niderl.).
  19. Serving dynamic PDFs with iText – ADTmag [online], adtmag.com [dostęp 2017-11-15] (ang.).
  20. Ten Open Source Solutions Your Enterprise Should Be Using | Microservices Expo [online], soa.sys-con.com [dostęp 2017-11-15] [zarchiwizowane z adresu 2016-11-18].
  21. Zarchiwizowana kopia. [dostęp 2013-12-21]. [zarchiwizowane z tego adresu (2013-12-15)].
  22. Self-Service, Prorated Supercomputing Fun! – The New York Times [online], open.blogs.nytimes.com [dostęp 2017-11-15] (ang.).
  23. iText Developers [online], itextpdf.com [dostęp 2017-11-15] [zarchiwizowane z adresu 2014-06-25] (ang.).
  24. Flanders Trade – Wereldwijs maart 2012 – Pagina 1 [online], epub01.publitas.com [dostęp 2017-11-15] (niderl.).
  25. iText PDF – PDF Library in Java or .NET [online], itextpdf.com [dostęp 2017-11-15] [zarchiwizowane z adresu 2015-09-15] (ang.).
  26. Devoxx.com [online], www.devoxx.com [dostęp 2019-03-05] (ang.).
  27. Zarchiwizowana kopia. [dostęp 2013-12-21]. [zarchiwizowane z tego adresu (2013-10-14)].
  28. Tien Belgen in Deloitte Technology Fast50 – Nieuws – Data News.be [online], datanews.knack.be [dostęp 2017-11-15].
  29. De 5 Belgische digitale start-ups met de snelste groei [online], www.digimedia.be [dostęp 2017-11-15] (ang.).
  30. https://web.archive.org/web/20131019042925/http://www.deloitte.com/assets/Dcom-Belgium/Local%20Assets/Documents/NL/Fast50/Krant%20van%20West%20Vlaanderen_Ieper%20heeft%20studenten%20en%20betere%20verbinding%20nod....pdf
  31. Re: [iText-questions] Silent license change? [online], www.mail-archive.com [dostęp 2017-11-15] (ang.).
  32. YouTube [online], www.youtube.com [dostęp 2017-11-15] (fr.).
  33. Zarchiwizowana kopia. [dostęp 2013-12-21]. [zarchiwizowane z tego adresu (2013-10-17)].

Linki zewnętrzne[edytuj | edytuj kod]