正在获取 "java.lang.RuntimeException: The document is not open",当 Document 对象打开时
Getting "java.lang.RuntimeException: The document is not open", when the Document object is open
我正在尝试将 number/page 页数添加到我的 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都打开了。我添加到代码中另一个位置的调试确认这是我们在这里使用的一个打开的文档变量。
这里的问题是,虽然来自 I-Text 的错误消息说文档没有打开,但实际上是 PdfWriter 没有打开。在 try/catch 块中的构造函数之后添加 writer.open();
解决了这个问题。
我正在尝试将 number/page 页数添加到我的 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都打开了。我添加到代码中另一个位置的调试确认这是我们在这里使用的一个打开的文档变量。
这里的问题是,虽然来自 I-Text 的错误消息说文档没有打开,但实际上是 PdfWriter 没有打开。在 try/catch 块中的构造函数之后添加 writer.open();
解决了这个问题。