gpt4 book ai didi

java - EasyTable - 单元格中的段落

转载 作者:太空宇宙 更新时间:2023-11-04 09:05:13 25 4
gpt4 key购买 nike

我正在使用你们的 EasyTable 库,它非常棒,对我来说它比 itext7 更好。我只有一个问题。我试图在单元格内插入一个多行段落,但它给了我一个错误。这是我的类(class)。

错误是:

    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());
}
}
}

谢谢。

最佳答案

Vandaer 建议了这个解决方案:

TableDrawer tableDrawer = TableDrawer.builder()
.contentStream(contentStream)
.page(page) // <-- This was missing
.startX((page.getMediaBox().getUpperRightX() - 200) / 2)
.startY(page.getMediaBox().getUpperRightY() - 20)
.table(myTable)
.build();

关于java - EasyTable - 单元格中的段落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60285699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com