protected void processTableContent(
     final LogicalPageKey logicalPageKey,
     final LogicalPageBox logicalPage,
     final TableContentProducer contentProducer)
     throws ContentProcessingException {
   try {
     if (writer == null) {
       writer = new XmlDocumentWriter(outputStream, metaData);
       writer.open();
     }
     writer.processTableContent(logicalPage, metaData, contentProducer, false);
   } catch (Exception e) {
     throw new ContentProcessingException("Failed to generate PDF document", e);
   }
 }
  protected void processingContentFinished() {
    if (isContentGeneratable() == false) {
      return;
    }

    if (writer != null) {
      try {
        this.metaData.commit();
        writer.close();
      } catch (IOException e) {
        throw new InvalidReportStateException("Failed to close writer");
      }
    }
  }