因此,我试图根据用户输入和数据生成一个可能包含许多页面的报告。
总结了类似的错误,但并未将其视为问题的实际解决方案。
我的功能:
public void generateReport()
{
final String path = "/sdcard/testreport.pdf";
try
{
Document document = new Document();
writer = PdfWriter.getInstance(document, new FileOutputStream(FILE));
document.open();
// many lines code related to report generation
writer.setOpenAction(action);
status = GetReport(document);
document.close(); //RunTimeException here.
}
catch (Exception e)
{
e.printStackTrace();
}
但是我将RunTimeException作为-
记录
04-16 19:34:01.928: W/System.err(14248): java.lang.RuntimeException: The page 1 was requested but the document has only 0 pages.
04-16 19:34:01.929: W/System.err(14248): at com.itextpdf.text.pdf.PdfWriter.close(PdfWriter.java:1208)
04-16 19:34:01.929: W/System.err(14248): at com.itextpdf.text.pdf.PdfDocument.close(PdfDocument.java:776)
04-16 19:34:01.929: W/System.err(14248): at com.itextpdf.text.Document.close(Document.java:420)
04-16 19:34:01.929: W/System.err(14248): at com.wassap.main.ReportsActivity.generateReport(ReportsActivity.java:541)
仅在事先知道页面是否存在的情况下,我才不知道如何关闭文档。
最佳答案
这个问题很旧,但是一个答案可能会帮助其他人以后找到它。
我有同样的错误。就我而言,我正在创建的PDF只有一页,但是我创建的PdfAction却调用PdfAction.GotoLocalPage(2, pdfDest, writer)
。由于没有页面2,因此引发了“请求页面”错误。
如果您的错误是有0页,那么我想知道您是否遇到某种错误,导致您的PDF代码无法运行,因此不在生成的PDF中创建任何页面。
另一个想法是,您包含的示例代码中没有看到document.NewPage()
调用。也许有多种创建新页面的方法,但这就是我手动添加新页面的要求。如果您没有这些电话,那么也许这就是为什么PDF中没有页面的原因?