itext
Style: iText 5 kontra iText 7
Szukaj…
Uwagi
Tworzenie dokumentu, w którym musisz przełączać się między stylami, często jest uciążliwe w iText 5. Musisz stworzyć wiele obiektów Chunk
i zawsze musisz dokonać kompromisu między zastosowaniem stylów bezpośrednio do każdego nowego Chunk
lub tworzeniem metoda pomocnicza, która tworzy dla ciebie Chunk
.
Co naprawiliśmy w iText 7:
Można teraz łączyć metody. Wszystkie setFont()
, setFontSize()
, addStyle()
i inne metody zwracają obiekt, na którym są wywoływane. Dodawanie Paragraph
zawierającego różne style można teraz wykonać w jednym wierszu:
document.add(
new Paragraph()
.add("In this example, named ")
.add(new Text("HelloWorldStyles").addStyle(style))
.add(", we experiment with some text in ")
.add(new Text("code style").addStyle(style))
.add("."));
Korzystając z obiektu Style
, możesz teraz stosować jednocześnie różne właściwości (czcionkę, kolor czcionki, kolor tła, rozmiar czcionki, ...) za pomocą metody addStyle()
.
Chcieć wiedzieć więcej?
Przeczytaj Wprowadzenie do klasy PdfFont, która jest rozdziałem 1 w samouczku iText 7: Building Blocks . Zdobądź bezpłatny ebook!
HelloWorldStyles.java (iText 5)
W tym przykładzie iText 5 musimy przełączać się między różnymi stylami w tym samym dokumencie:
Najlepszym sposobem na to w iText 5 jest stworzenie wygodnej metody, która tworzy Chunk
w stylu, który musi być często używany; zobacz createBgChunk()
:
public Chunk createBgChunk(String s, Font font) {
Chunk chunk = new Chunk(s, font);
chunk.setBackground(BaseColor.LIGHT_GRAY);
return chunk;
}
Możemy teraz użyć tej metody w kodzie, który tworzy plik PDF:
public void createPdf(String dest)
throws DocumentException, IOException {
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
Font code = new Font(FontFamily.COURIER, 12, Font.NORMAL, BaseColor.RED);
Paragraph p = new Paragraph("In this example, named ");
p.add(createBgChunk("HelloWorldStyles", code));
p.add(", we experiment with some text in ");
p.add(createBgChunk("code style", code));
p.add(".");
document.add(p);
document.close();
}
Źródło: developers.itextpdf.com
HelloWorldStyles.java (iText 7)
W tym przykładzie iText 7 musimy przełączać się między różnymi stylami w tym samym dokumencie:
Najlepszym sposobem osiągnięcia tego celu w iText 7, jest stworzenie Style
obiektu, a do stosowania tego Style
do Text
obiektu:
public void createPdf(String dest) throws IOException {
PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
PdfFont code = PdfFontFactory.createFont(FontConstants.COURIER);
Style style = new Style()
.setFont(code)
.setFontSize(12)
.setFontColor(Color.RED)
.setBackgroundColor(Color.LIGHT_GRAY);
try (Document document = new Document(pdf)) {
document.add(
new Paragraph()
.add("In this example, named ")
.add(new Text("HelloWorldStyles").addStyle(style))
.add(", we experiment with some text in ")
.add(new Text("code style").addStyle(style))
.add("."));
}
}
Źródło: developers.itextpdf.com i samouczek iText 7: Building Blocks .