Java 在iText中添加页眉/页脚时获取NullPointerException
我试图用iText创建一个PDF。 我的目标是做一份问题报告。我只能将问题和答案添加到PDF中。 然后我尝试通过添加页眉/页脚来修改它,添加页码、水印等。现在它给了我NullPointerException,我无法找出哪里出了问题 我犯了一个错误 原因:java.lang.NullPointerException 在 edu.ijse.gdse41.ams.other.HeaderFooter.onEndPageHeaderFooter.java:57 www.com.itextpdf.text.pdf.PdfDocument.newPagePdfDocument.java:902 com.itextpdf.text.pdf.PdfDocument.closePdfDocument.java:837在 com.itextpdf.text.Document.closeDocument.java:416 edu.ijse.gdse41.ams.view.CreateAssignmentController.createPDFCreateAssignmentController.java:644 在 edu.ijse.gdse41.ams.view.CreateAssignmentController.proceedBtnClickedCreateAssignmentController.java:292 ... 58多 CreateAssignment.java类中的createPDF方法Java 在iText中添加页眉/页脚时获取NullPointerException,java,nullpointerexception,itext,Java,Nullpointerexception,Itext,我试图用iText创建一个PDF。 我的目标是做一份问题报告。我只能将问题和答案添加到PDF中。 然后我尝试通过添加页眉/页脚来修改它,添加页码、水印等。现在它给了我NullPointerException,我无法找出哪里出了问题 我犯了一个错误 原因:java.lang.NullPointerException 在 edu.ijse.gdse41.ams.other.HeaderFooter.onEndPageHeaderFooter.java:57 www.com.itextpdf.text
public class HeaderFooter extends PdfPageEventHelper {
Phrase[] header = new Phrase[2];
int pageNum;
Image watermark;
public HeaderFooter(Document doc) throws BadElementException, IOException {
this.watermark = Image.getInstance("C:\\Users\\Dell\\Documents\\NetBeansProjects\\AssignmentManagementSystem\\src\\edu\\ijse\\gdse41\\ams\\resources\\images\\watermark.png");
watermark.rotate();
watermark.scaleToFit(doc.getPageSize());
watermark.setRotationDegrees(30);
}
@Override
public void onChapter(PdfWriter writer, Document document, float paragraphPosition, Paragraph title) {
header[1] = new Phrase(title.getContent());
pageNum = 1;
}
@Override
public void onEndPage(PdfWriter writer, Document document) {
try {
Rectangle rect = writer.getBoxSize("art");
switch (writer.getPageNumber() % 2) {
case 0:
ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_RIGHT, header[0], rect.getRight(), rect.getTop(), 0);
break;
case 1:
ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_LEFT, header[1], rect.getLeft(), rect.getTop(), 0);
break;
}
ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER, new Phrase(String.format("Page %d", pageNum)), (rect.getLeft() + rect.getRight()) / 2, rect.getBottom() - 18, 0);
PdfContentByte content = writer.getDirectContent();
content.addImage(watermark);
} catch (DocumentException ex) {
Logger.getLogger(HeaderFooter.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
public void onStartPage(PdfWriter writer, Document document) {
pageNum++;
}
@Override
public void onOpenDocument(PdfWriter writer, Document document) {
header[0] = new Phrase("ABC");
}
}
在页面事件中,您假设正在创建的PDF具有/ArtBox边界:
Rectangle rect = writer.getBoxSize("art");
但是,当我查看创建PDF的代码时,我没有看到您在任何地方创建这样的页面边界。这意味着rect为null,并且诸如rect.getRight、rect.getTop等方法,。。。抛出NullPointerException
Rectangle rect = writer.getBoxSize("art");