Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在iText中添加页眉/页脚时获取NullPointerException_Java_Nullpointerexception_Itext - Fatal编程技术网

Java 在iText中添加页眉/页脚时获取NullPointerException

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

我试图用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方法

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");