Corrupted .docx download usando phpdocx

Eu tenho um projeto em que estamos usando phpdocx pro para gerar um arquivo .docx no de modelos. Eu posso obter os dados para o modelo bastante fácil, no entanto, quando o arquivo é baixado e aberto no MS Word 2010, o programa informa que o arquivo não pode ser aberto porque há problemas com o conteúdo, sendo os detalhes "O arquivo está corrompido e não pode ser aberto ". O Word pode reparar o documento, no entanto, o problema ainda é que ele não deve ser corrompido em primeiro lugar.

É assim que estou gerando o documento:

function generateUnitDesign(){
  if($this->populateRecords()){
      require_once dirname(__FILE__).'/phpdocx/classes/CreateDocx.inc';
      $filename = 'UnitDesignTemplate-'.str_replace(' ', '', $this->rec->title);
      //Create Document
      $document = new CreateDocx();
      $document->addTemplate(dirname(__FILE__).'/templates/unitdesigntemplate.docx');

      // Fill in text fields
      $document->addTemplateVariable('TITLE', $this->rec->title);
      $document->addTemplateVariable('CHALLENGE', $this->rec->challenge, 'html');
      $document->addTemplateVariable('HOOK', $this->rec->hook, 'html');
      $document->addTemplateVariable('RESEARCH', $this->rec->research, 'html');
      $document->addTemplateVariable('AUDIENCE', $this->rec->audience, 'html');
      $document->addTemplateVariable('SUMMARY', $this->rec->project_brief, 'html');
      $document->addTemplateVariable('RESOURCES', $this->rec->resources, 'html');
      $document->addTemplateVariable('REQUIREMENTS', $this->rec->requirements, 'html');
      $document->addTemplateVariable('SCAFFOLDING', $this->rec->scaffolding, 'html');

      $document->createDocx($filename);
      unset($document);
      header("Content-Type: application/vnd.ms-word");
      header("Content-Length: ".filesize($filename.'.docx'));
      header('Content-Disposition: attachment; filename='.$filename.'.docx');
      header('Content-Transfer-Encoding: binary');
      ob_clean();
      flush();
      readfile($filename.'.docx');
      unlink($filename.'.docx');
  }
}

Originalmente, eu estava tentando usar ocreateDocxAndDownload() função para obter o arquivo, mas deixaria uma cópia do arquivo .docx no servidor, o que não era ideal. Estou esquecendo de algo? Existe alguém com mais experiência com o phpdocx para dar uma mãozinha?

Editar: Bem, eu me sinto como um idiota. Depois de restringir o problema à parte do código que gera o arquivo, finalmente abri o arquivo em um editor HEX e descobri que o problema era que, após a saída do arquivo, o frontend da web anexaria o início do HTML ao final do arquivo. o arquivo docx fazendo um arquivo 'corrompido'. Esta linha imediatamente após aunlink() consertou a coisa toda:

exit;

Pekka: Se você quiser responder isso com as novas informações, aceitarei sua resposta.

questionAnswers(2)

yourAnswerToTheQuestion