Я использую вашу библиотеку EasyTable, и это просто фантастика c, для моего использования она лучше, чем itext7. У меня только одна проблема. Я пытаюсь вставить абзац с несколькими строками внутри ячейки, но это выдает ошибку. Вот мой класс.
Ошибка:
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)
</p>
<code>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());
}
}
}
</code>
Спасибо.