0

我正在尝试向我的 pdf 添加页码/页数。我们这样做的方法是创建报告的第二个副本以获取页数,然后遍历该循环以将数字写回到第一个报告中。报告已成功运行,但未添加页码。快速查看日志显示我收到了一个 RuntimeException,说明文档未从以下代码打开:

public void addPageCount(String jsonData, Document input, String fileLocation, String tempFileLocation, float xPos, float yPos, float rotation)
        throws FileNotFoundException, IOException, DocumentException, SQLException {
    String tempFileSpot1 = tempFileLocation + "temp1.pdf";
    Document temp = new Document();
    FileOutputStream fos = new FileOutputStream(tempFileSpot1);
    temp.open();
    PdfWriter writer;
    boolean leaveOpen = input.isOpen();
    if (!input.isOpen()) {
        input.open();
    }
    try {
        writer = PdfWriter.getInstance(temp, fos);
    }//try
    catch (DocumentException e) {
        e.printStackTrace();
        throw e;
    }//catch (DocumentException)

    System.out.println("temp.isOpen = " + temp.isOpen());
    System.out.println("input.isOpen = " + input.isOpen());
    try {
        this.makePDF(jsonData, temp, writer);
        //...
    } catch (Exception e5) {
        e5.printStackTrace();
    }//

    //...
}

这里的调试结果告诉我 Documents input 和 temp 都是打开的。我在代码中添加到另一个位置的调试确认这是我们在此处使用的打开的 Document 变量。

4

1 回答 1

1

这里的问题是,虽然来自 I-Text 的错误消息说文档未打开,但实际上是 PdfWriter 未打开。在 try/catch 块中的构造函数之后添加writer.open();解决了这个问题。

于 2019-09-03T18:57:16.193 回答