2015-02-21 3 views
2

Моя базовая установка PHPWord работает.PHPWord поврежден файл?

Это мой код:

<?php 
    require_once 'PhpWord/Autoloader.php'; 
    \PhpOffice\PhpWord\Autoloader::register(); 



    function getEndingNotes($writers) 
{ 
    $result = ''; 
    // Do not show execution time for index 
    if (!IS_INDEX) { 
     $result .= date('H:i:s') . " Done writing file(s)" . EOL; 
     $result .= date('H:i:s') . " Peak memory usage: " . (memory_get_peak_usage(true)/1024/1024) . " MB" . EOL; 
    } 
    // Return 
    if (CLI) { 
     $result .= 'The results are stored in the "results" subdirectory.' . EOL; 
    } else { 
     if (!IS_INDEX) { 
      $types = array_values($writers); 
      $result .= '<p>&nbsp;</p>'; 
      $result .= '<p>Results: '; 
      foreach ($types as $type) { 
       if (!is_null($type)) { 
        $resultFile = 'results/' . SCRIPT_FILENAME . '.' . $type; 
        if (file_exists($resultFile)) { 
         $result .= "<a href='{$resultFile}' class='btn btn-primary'>{$type}</a> "; 
        } 
       } 
      } 
      $result .= '</p>'; 
     } 
    } 
    return $result; 
} 
// Template processor instance creation 
$templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor('template.docx'); 


// Variables on different parts of document 
//$templateProcessor->setValue('vorname', htmlspecialchars('John')); // On section/content 
//$templateProcessor->setValue('nachname', htmlspecialchars('Doe')); // On footer 
//$templateProcessor->setValue('funktion', htmlspecialchars('Manager')); 


// Simple table 
$templateProcessor->cloneRow('rowValue', 10); 

//clone our things 
// Will clone everything between ${tag} and ${/tag}, the number of times. By default, 1. 
$templateProcessor->cloneBlock('CLONEME', 5); 


//delete things 
// Everything between ${tag} and ${/tag}, will be deleted/erased. 
$templateProcessor->deleteBlock('DELETEME'); 



// Saving the document as OOXML file... 
$temp_file = tempnam(sys_get_temp_dir(), 'PHPWord'); 
ob_clean(); 
$templateProcessor->saveAs($temp_file); 
getEndingNotes(array('Word2007' => 'docx')); 


header("Content-Disposition: attachment; filename='cv.docx'"); 
readfile($temp_file); // or echo file_get_contents($temp_file); 
unlink($temp_file); // remove temp file 
?> 

она хорошо работает для этого Слова file.

Однако, когда я что-то меняю в своем текстовом файле, PHPWord поставляет файл с исправлением. Это как-то связано с ошибками XML. Мой вопрос в том, как я могу отредактировать мой файл слов и получить отлично работающий файл без ошибок? Есть ли инструмент для исправления XML?

ответ

1

Я нашел ответ, редактируя слово word word, вставляя различные слова xml между словами. Мне пришлось вручную отредактировать файл в редакторе, убедившись, что значения замещения не разделены тегами.

+1

Я не знаю, поможет ли это вам, но в будущем, если у вас есть куча специальных символов, таких как &, вы можете использовать исправление здесь: http://stackoverflow.com/questions/8576964/phpword-экспорт давая-коррупционный-слово-файл? RQ = 1. У меня также были проблемы с экспортом результатов форм от людей, которые копировали и вставляли в форму из Word. Для этого есть еще одно решение, если вы столкнулись с этой проблемой. PHPWord - БОЛЬШОЙ инструмент, но иногда может быть очень обидным. – cbloss793