Beschädigter .docx-Download mit phpdocx

Ich habe ein Projekt, in dem wir Phpdocx Pro verwenden, um eine DOCX-Datei in den From-Vorlagen zu generieren. Ich kann die Daten problemlos in die Vorlage importieren. Wenn die Datei jedoch heruntergeladen und in MS Word 2010 geöffnet wird, meldet das Programm, dass die Datei nicht geöffnet werden kann, da Probleme mit dem Inhalt vorliegen. Die Details lauten "Die Datei ist beschädigt und kann nicht geöffnet werden ". Word kann das Dokument reparieren, es besteht jedoch weiterhin das Problem, dass es überhaupt nicht beschädigt werden sollte.

So generiere ich das 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');
  }
}

Ursprünglich habe ich versucht, ihre zu verwendencreateDocxAndDownload() Funktion zum Abrufen der Datei, aber es würde eine Kopie der DOCX-Datei auf dem Server belassen, was nicht ideal war. Vermisse ich etwas? Gibt es jemanden mit mehr Erfahrung mit phpdocx, der mithelfen kann?

Bearbeiten: Ich fühle mich wie ein Idiot. Nachdem ich das Problem auf den Teil des Codes eingegrenzt hatte, der die Datei ausgibt, öffnete ich die Datei schließlich in einem HEX-Editor und stellte fest, dass das Web-Frontend nach erfolgreicher Ausgabe den Anfang des HTML-Codes an das Ende von anhängen würde Die docx-Datei erstellt eine 'beschädigte' Datei. Diese eine Zeile unmittelbar nach demunlink() behebt das Ganze:

exit;

Pekka: Wenn Sie dies mit den neuen Informationen beantworten möchten, werde ich Ihre Antwort akzeptieren.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage