Передача макета лезвия в phpword - PullRequest
0 голосов
/ 15 мая 2019

Я использую Laravel с phpword. Поэтому здесь я хочу экспортировать HTML-макет из блейд-файла в слово. Но когда я пытаюсь создать его, появляется ошибка: DOMDocument::loadXML(): Opening and ending tag mismatch: link line 1 and head in Entity, line: 1
Мой код:

$content = view('docs.index')->render();

$dom = new DOMDocument();
$dom->loadHTML($content);
$dom->saveHTML();

$phpWord = new PhpWord();
Html::addHtml($phpWord->addSection(), $dom->saveHTML(), true);
$objWriter = IOFactory::createWriter($phpWord, 'Word2007');
$objWriter->save('doc_index_'.Carbon::now()->format('d-m-y h-i').'.docx');

return view('papers.show')->with('success');

Вот мой файл лезвия:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Doc HTML</title>
    <meta charset="utf-8">
    <link rel="stylesheet" href="/bootstrap/css/bootstrap.min.css" />
</head>
<body>
<div>
    <p>
        Laravel is a web application framework with expressive, elegant syntax. <br />
        We believe development must be an enjoyable and creative experience to be truly fulfilling. <br />
        Laravel takes the pain out of development by easing common tasks used in many web projects. <br />
    </p>
</div>
</body>
</html>

Печать переменной $ content:

"""
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Doc HTML</title>
    <meta charset="utf-8" />
    <link rel="stylesheet" href="/bootstrap/css/bootstrap.min.css" />
</head>
<body>
<div>
    <p>
        Laravel is a web application framework with expressive, elegant syntax. <br />
        We believe development must be an enjoyable and creative experience to be truly fulfilling. <br />
        Laravel takes the pain out of development by easing common tasks used in many web projects. <br />
    </p>
</div>
</body>
</html>

"""

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

Часть <!DOCTYPE html> в начале вашего шаблона вызывает эту ошибку.Что касается чтения файлов стилей, из ссылки на подробности функции, приведенной выше в обсуждении PHPWord / Html.php , вы можете видеть, что addHtml будет просто использовать содержимое тега body и игнорировать все остальное.

Что касается другого вопроса в приведенном выше обсуждении, я не думаю, что PHPWord поддерживает какие-либо включения стилей из файлов CSS - в этом конкретном примере я не уверен, каков будет ожидаемый результат при применениизагрузочный адаптивный стиль к содержимому документа Word.

0 голосов
/ 16 мая 2019

Ваш тег <meta> технически не закрыт. Чтобы следовать спецификации для элементов, которые пропускают закрывающий тег, к ним необходимо добавить суффикс />. Итак, как у вас есть <br /> и <link ... /> ваши метатеги должны быть <meta ... />.

...