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
?>

это хорошо работает для этого слова файл.

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

3

Решение

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

1

Другие решения

У меня та же проблема, и это первый ответ через поиск Google.

Я обнаружил, что использование функции «deleteBlock ()» для удаления ненужного раздела сделает что-то с шаблоном, что сделает невозможным его открытие с помощью MS Word / Google Docs. Я могу нормально открывать страницы Mac, но по какой-то причине функция deleteBlock () делает что-то странное с экспортом.

Моя правка была вместо того, чтобы использовать deleteBlock (), я сделал:

$templateProcessor->cloneBlock('HOBBYBLOCK', 0);

(«Хобби» — это просто название раздела, который я избегал в каждом конкретном случае)

  1. Эффективное удаление оберток блока {} и
  2. Установка внутренней переменной / точки ввода в ноль.

Казалось, это решило мою проблему. Просто хедс-ап для любого в будущем, кто найдет это и нуждается в помощи для устранения неполадок : ^}

1

По вопросам рекламы [email protected]