Uszkodzone pobieranie .docx przy użyciu phpdocx

Mam projekt, w którym używamy phpdocx pro do wygenerowania pliku .docx w szablonach from. Mogę łatwo wprowadzić dane do szablonu, jednak gdy plik zostanie pobrany i otwarty w MS Word 2010, program zgłasza, że ​​nie można otworzyć pliku, ponieważ występują problemy z zawartością, a szczegóły są „Plik jest uszkodzony i nie można go otworzyć ”. Program Word może naprawić dokument, jednak problem nadal pozostaje niezauważalny.

W ten sposób generuję dokument:

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');
  }
}

Pierwotnie próbowałem użyć ichcreateDocxAndDownload() funkcja do pobrania pliku, ale pozostawiłaby kopię pliku .docx na serwerze, co nie było idealne. Czy czegoś mi brakuje? Czy jest ktoś, kto ma więcej doświadczenia z phpdocxem, aby pożyczyć rękę?

Edytować: Cóż, czuję się jak idiota. Po zawężeniu problemu do części kodu, który wyprowadza plik, w końcu otworzyłem plik w edytorze HEX i odkryłem, że problem polega na tym, że po pomyślnym wyprowadzeniu pliku nakładka sieciowa dołącza początek jego HTML do końca plik docx tworzący „uszkodzony” plik. Ta jedna linia zaraz pounlink() naprawiłem całą sprawę:

exit;

Pekka: Jeśli chcesz odpowiedzieć na to nowymi informacjami, zaakceptuję twoją odpowiedź.

questionAnswers(2)

yourAnswerToTheQuestion