因此,我试图根据用户输入和数据生成一个可能包含许多页面的报告。

总结了类似的错误,但并未将其视为问题的实际解决方案。

我的功能:

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中没有页面的原因?

10-04 12:01