itext
Tworzenie PDF: iText 5 kontra iText 7
Szukaj…
Uwagi
W oryginalnym projekcie iText można było utworzyć obiekt Document
wysokiego poziomu, a następnie pozwolić innym DocListener
nasłuchiwać tego obiektu Document
. Osiągnięto to poprzez użycie różnych PdfWriter
piszących: PdfWriter
, HTMLWriter
i RtfWriter
. Podczas korzystania z PdfWriter
, PdfDocument
został utworzony wewnętrznie. Ta klasa niskiego poziomu zajmowała się wszystkimi strukturami związanymi z plikami PDF. Mniej więcej tak samo było w przypadku innych formatów.
Z biegiem lat iText specjalizował się i stał się czystą biblioteką PDF. Tworzenie HTML i RTF zostało porzucone, dlatego nie było już konieczne tworzenie Document
przed utworzeniem PdfWriter
, ale musieliśmy trzymać się oryginalnej architektury, ponieważ nie byliśmy gotowi na złamanie API.
Z biegiem lat dodawaliśmy do iText coraz więcej funkcji PDF, a fakt, że PdfDocument
był klasą do użytku wewnętrznego, stał się problematyczny. Zastosowaliśmy obejścia, abyśmy mogli wprowadzić nowe funkcje PDF należące do klasy PdfDocument
aż do momentu, gdy osiągnęliśmy pułap tego, co uznaliśmy za akceptowalne jako obejścia.
Wtedy postanowiliśmy przepisać iText od podstaw i stworzyć zupełnie nową architekturę dla iText. Teraz mamy wyraźne rozróżnienie między PdfDocument
(dla operacji niskiego poziomu) a Document
(dla funkcji wysokiego poziomu). Nie musimy już otwierać dokumentu, a jeśli zastosujemy podejście „ spróbuj z zasobami” , nie musimy go nawet sami zamykać.
Chcieć wiedzieć więcej? Zdobądź bezpłatny ebook!
HelloWorld.java (iText 5)
Załóżmy, że chcemy stworzyć prosty dokument Hello World:
W iText 5 można to zrobić w następujący sposób:
public void createPdf(String dest)
throws DocumentException, IOException {
Document document = new Document();
PdfWriter.getInstance(
document, new FileOutputStream(dest));
document.open();
document.add(new Paragraph("Hello World!"));
document.close();
}
Źródło: developers.itextpdf.com
HelloWorld1.java i HelloWorld2.java (iText 7)
Załóżmy, że chcieliśmy stworzyć prosty dokument Hello World:
W iText 7 możemy to zrobić w następujący sposób:
public void createPdf(String dest) throws IOException {
PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
Document document = new Document(pdf);
document.add(new Paragraph("Hello World!"));
document.close();
}
Lub możemy to zrobić w ten sposób:
public void createPdf(String dest) throws IOException {
PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
try (Document document = new Document(pdf)) {
document.add(new Paragraph("Hello World!"));
}
}
Źródło: developers.itextpdf.com i samouczek iText 7: Building Blocks .