From 2d6e5b0156e6e3327b6aaca680ff56747b31fdd6 Mon Sep 17 00:00:00 2001 From: amit2103 Date: Mon, 5 Aug 2019 00:38:32 +0530 Subject: [PATCH] [BAEL-16045] - Check Article Code Matches GitHub for https://www.baeldung.com/java-pdf-creation article --- .../java/com/baeldung/pdf/PDFSampleMain.java | 77 ++++++++++++++++++ pdf/src/main/resources/Java_logo.png | Bin 0 -> 13960 bytes 2 files changed, 77 insertions(+) create mode 100644 pdf/src/main/java/com/baeldung/pdf/PDFSampleMain.java create mode 100644 pdf/src/main/resources/Java_logo.png diff --git a/pdf/src/main/java/com/baeldung/pdf/PDFSampleMain.java b/pdf/src/main/java/com/baeldung/pdf/PDFSampleMain.java new file mode 100644 index 0000000000..195f49e962 --- /dev/null +++ b/pdf/src/main/java/com/baeldung/pdf/PDFSampleMain.java @@ -0,0 +1,77 @@ +package com.baeldung.pdf; + +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.stream.Stream; + +import com.itextpdf.text.BadElementException; +import com.itextpdf.text.BaseColor; +import com.itextpdf.text.Document; +import com.itextpdf.text.Element; +import com.itextpdf.text.Image; +import com.itextpdf.text.Phrase; +import com.itextpdf.text.pdf.PdfPCell; +import com.itextpdf.text.pdf.PdfPTable; +import com.itextpdf.text.pdf.PdfWriter; + +public class PDFSampleMain { + + public static void main(String[] args) { + + try { + + Document document = new Document(); + PdfWriter.getInstance(document, new FileOutputStream("iTextTable.pdf")); + + document.open(); + + PdfPTable table = new PdfPTable(3); + addTableHeader(table); + addRows(table); + addCustomRows(table); + + document.add(table); + document.close(); + + } catch (Exception e) { + e.printStackTrace(); + } + } + + private static void addTableHeader(PdfPTable table) { + Stream.of("column header 1", "column header 2", "column header 3") + .forEach(columnTitle -> { + PdfPCell header = new PdfPCell(); + header.setBackgroundColor(BaseColor.LIGHT_GRAY); + header.setBorderWidth(2); + header.setPhrase(new Phrase(columnTitle)); + table.addCell(header); + }); + } + + private static void addRows(PdfPTable table) { + table.addCell("row 1, col 1"); + table.addCell("row 1, col 2"); + table.addCell("row 1, col 3"); + } + + private static void addCustomRows(PdfPTable table) throws URISyntaxException, BadElementException, IOException { + Path path = Paths.get(ClassLoader.getSystemResource("Java_logo.png").toURI()); + Image img = Image.getInstance(path.toAbsolutePath().toString()); + img.scalePercent(10); + + PdfPCell imageCell = new PdfPCell(img); + table.addCell(imageCell); + + PdfPCell horizontalAlignCell = new PdfPCell(new Phrase("row 2, col 2")); + horizontalAlignCell.setHorizontalAlignment(Element.ALIGN_CENTER); + table.addCell(horizontalAlignCell); + + PdfPCell verticalAlignCell = new PdfPCell(new Phrase("row 2, col 3")); + verticalAlignCell.setVerticalAlignment(Element.ALIGN_BOTTOM); + table.addCell(verticalAlignCell); + } +} diff --git a/pdf/src/main/resources/Java_logo.png b/pdf/src/main/resources/Java_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..383327b2036404570dae04d6ed37084384d1d0e3 GIT binary patch literal 13960 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 Vj^4XbD1iRAi@A$ejdeZoe*iJj$MOIG literal 0 HcmV?d00001