IText

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

iText - darmowa biblioteka dla programistów, która umożliwia tworzenie i manipulowanie dokumentów w formacie PDF, w poziomie języka 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 kodów.[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 pod licencją 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][12] 

  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,
  • Dokumenty muszą zostać stworzone w niezmienionej postaci, w procesie tzw. „batchowania”;
  • 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.[13] 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ń.[14]

iText oferuje pomoc techniczną dla większości zaawansowanych opcji, takich jak: podpis PKI, enkrypcja 40- i 128-bitowa, 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.[17]

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.[18][19] Matt Stephens wypowiada się o iText jako o “jednym z najlepiej strzeżonych sekretów Javy”.[20]

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ć.[21] James Gosling wyróżnił bibliotekę iText używając ją w nowej edycji Huckster.[22] The New York Times wykorzystuje iText do tworzenia wersji PDF artykułów ze swojej publicznej domeny.[23]

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.[24]

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.[25]

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.[26]

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

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.[28][29][30][31]

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ą.[32][33] 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.[34] Licencja AGPL nie jest zgodna z licencją GPL, mimo, że biblioteka AGPL może zostać powiązana z programem GPL.

Przypisy

  1.  : Ohloh commits summary (ang.). Ohloh.net, 2013-08-19. [dostęp 2013-10-26].
  2.  : Ohloh iText overview page (ang.). Ohloh.net. [dostęp 2013-10-26].
  3.  : Ohloh Estimated development cost (ang.). Ohloh.net, 2013-08-19. [dostęp 2013-10-26].
  4. Book Review. John Griffin
  5. iText books on Leanpub (ang.). Leanpub.com. [dostęp 2013-10-26].
  6. port of the book examples to C# (ang.). Kuujinbo.info. [dostęp 2013-10-26].
  7. iText on the Code Project (ang.). Codeproject.com. [dostęp 2013-10-26].
  8. http://sourceforge.net/projects/itext/
  9. http://sourceforge.net/projects/itextsharp/
  10. http://knaur.net/2009/06/10/java-itext-pdf-z-polskimi-znakami/
  11. http://users.uj.edu.pl/~ciesla/java/java_09.pdf
  12. http://users.uj.edu.pl/~ciesla/java/java_09.pdf
  13. http://www.artima.com/forums/flat.jsp?forum=121&thread=193714
  14. http://stefan.fenz.at/creating-pdfs-on-android-an-evaluation/
  15. http://www.pdfa.org/news/how-to-create-pdfa-3-using-itext/
  16. http://duff-johnson.com/2013/02/19/itext-bringing-pdfua-support-to-java-implementations/
  17. http://pdf-pdf.blogspot.be/2007/11/pdf-adobe-acrobat-history.html
  18. http://lowagie.com/sales1st
  19. http://www.istoire.be/een-it-bestseller/
  20. http://adtmag.com/articles/2006/09/12/serving-dynamic-pdfs-with-itext.aspx
  21. http://soa.sys-con.com/node/368028?page=0,1
  22. https://blogs.oracle.com/jag/entry/thanks_to_the_itext_folks
  23. http://open.blogs.nytimes.com/2007/11/01/self-service-prorated-super-computing-fun/?scp=1&sq=Self-service,%20Prorated%20Super%20Computing%20Fun!&st=cse&_r=0
  24. http://itextpdf.com/references
  25. http://epub01.publitas.com/173/34/
  26. http://itextpdf.com/sales2nd
  27. http://www.devoxx.com/display/DV11/iText
  28. http://actueel.deloitte.nl/media/316749/fast50_ranking_2013.pdf
  29. http://datanews.knack.be/ict/nieuws/tien-belgen-in-deloitte-technology-fast50/article-4000420777148.htm
  30. http://www.digimedia.be/content.php?lng=nl&rubric=News&id=15296
  31. http://www.deloitte.com/assets/Dcom-Belgium/Local%20Assets/Documents/NL/Fast50/Krant%20van%20West%20Vlaanderen_Ieper%20heeft%20studenten%20en%20betere%20verbinding%20nod....pdf
  32. http://www.mail-archive.com/itext-questions@lists.sourceforge.net/msg48353.html
  33. http://www.youtube.com/watch?v=NCwhEWEPV-E
  34. http://lowagie.com/itext2

Linki zewnętrzne[edytuj | edytuj kod]