I am using your EasyTable library and it is fantastic, for my use it is better than itext7. I have only one problem. I'm trying to insert a paragraph with multiple lines inside a cell but it gives me an error. Here is my class.
The error is:
Exception in thread "main" java.lang.NullPointerException at org.vandeseer.easytable.drawing.cell.ParagraphCellDrawer.drawContent(ParagraphCellDrawer.java:52) at org.vandeseer.easytable.TableDrawer.lambda$new$0(TableDrawer.java:53) at org.vandeseer.easytable.TableDrawer.drawRow(TableDrawer.java:161) at org.vandeseer.easytable.TableDrawer.drawWithFunction(TableDrawer.java:145) at org.vandeseer.easytable.TableDrawer.lambda$drawPage$1(TableDrawer.java:75) at java.lang.Iterable.forEach(Iterable.java:75) at org.vandeseer.easytable.TableDrawer.drawPage(TableDrawer.java:74) at org.vandeseer.easytable.TableDrawer.draw(TableDrawer.java:70) at it.baz.ProvaPDF.crea(ProvaPDF.java:66) at it.baz.ProvaPDF.main(ProvaPDF.java:21)
package it.baz;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.vandeseer.easytable.TableDrawer;
import org.vandeseer.easytable.settings.HorizontalAlignment;
import org.vandeseer.easytable.structure.Row;
import org.vandeseer.easytable.structure.Table;
import org.vandeseer.easytable.structure.cell.TextCell;
import org.vandeseer.easytable.structure.cell.paragraph.*;
import java.awt.*;
import java.io.IOException;
public class ProvaPDF {
public static void main(String[] args) {
ProvaPDF pdf = new ProvaPDF();
pdf.crea();
}
private void crea() {
try {
PDDocument document = new PDDocument();
final PDPage page = new PDPage(PDRectangle.A4);
document.addPage(page);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
Table myTable = Table.builder()
.addColumnsOfWidth(100, 100)
.addRow(Row.builder()
.add(TextCell.builder().text("One One").borderWidth(1).backgroundColor(Color.GRAY).build())
.add(TextCell.builder().text("One Two").borderWidth(1).backgroundColor(Color.LIGHT_GRAY).build())
.build())
.addRow(Row.builder()
.add(TextCell.builder().text("Two One").borderWidth(1).textColor(Color.RED).build())
.add(TextCell.builder().text("Two Two").borderWidth(1).horizontalAlignment(HorizontalAlignment.RIGHT).build())
.build())
.addRow(Row.builder()
.add(TextCell.builder().text("Two Two").borderWidth(1).horizontalAlignment(HorizontalAlignment.RIGHT).build())
.add(ParagraphCell.builder()
.paragraph(ParagraphCell.Paragraph.builder()
.append(StyledText.builder().text("This is some text in one font.").build())
.appendNewLine()
.build())
.build())
.build())
.build();
TableDrawer tableDrawer = TableDrawer.builder()
.contentStream(contentStream)
.startX((page.getMediaBox().getUpperRightX() - 200) / 2)
.startY(page.getMediaBox().getUpperRightY() - 20)
.table(myTable)
.build();
System.out.println(page.getMediaBox().getUpperRightY());
System.out.println(page.getMediaBox().getUpperRightX());
tableDrawer.draw();
contentStream.close();
document.save("example.pdf");
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
Thank you.