2016-05-02 22 views
0

私は3つのBladeファイルがHTMLで書かれていますが、現在WKHTMLTOPDFを使ってPDFフォーマットにエクスポートしています。同じHTMLファイルをWord文書に追加します。Laravel - DOMDocument :: loadXML():開始タグと終了タグの不一致 - PhpWordエラー

これまでのところ、LaravelのベストパッケージはPhpWordです。

コードのスニペット:これまで

<div class="page-break"></div> 

<h3>Introduction</h3> 

<p></p> 

<p></p> 

マイコード:

$phpWord = new \PhpOffice\PhpWord\PhpWord(); 
$section = $phpWord->addSection();  
$report = view('reports.audit-report', $data)->render(); 

\PhpOffice\PhpWord\Shared\Html::addHtml($section, $report, true); 

$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007'); 
$objWriter->save('helloWorld.docx'); 

それは現在、このエラーが返されます。

DOMDocument::loadXML(): Opening and ending tag mismatch: link line 1 and div in Entity, line: 1

迷惑な事は、あることに関係なくありますHTMLのすべての行を文字通り削除するまで、私はどの行を削除するか、そのエラーは常に持続する!

私は、次のコードを使用して、起きてからこのエラーを防ぐことができます。

libxml_use_internal_errors(true); 

をしかし、その後、それが返されます。

ErrorException in Html.php line 136: Trying to get property of non-object

は、誰もが成功したの前に、これらのエラーを解決しましたか?それ以上のコードが必要な場合は、私に知らせてください。どうもありがとう。

+0

好奇心がかかりません。問題はコンテナタグではありませんか?すなわち – Josh

+0

私のHTMLファイルにはタグがありませんが、私はそれらを追加したばかりで、同じエラーが返されます。 – Ben

答えて

0

メソッドaddHtml()は、提供された文字列をXMLとしてロードします。つまり、有効なXMLである必要があります。つまり、XHTMLを使用する必要があります。

エラーメッセージに、1行目にlinkタグがあると表示されます。linkは(X)HTMLの空の要素です。 HTMLとして保存すると、次のようになります。

<link rel="stylesheet" type="text/css" href="style.css"> 
<div>Some Content</div> 

これは2つの理由から有効ではありません。ここにはルート要素はありませんが、これはaddHtml()によって追加され、link要素は閉じられず、エラーが発生します。

<link rel="stylesheet" type="text/css" href="style.css"></link> 
<div>Some Content</div> 

またはこの:XMLと空のタグで

<link rel="stylesheet" type="text/css" href="style.css"/> 
<div>Some Content</div> 

<link></link>または<link/>のように書くことができ

有効なXHTMLフラグメントは、次のようになります。 >の前の/は、開始タグを直接閉じました。開始タグはXML/XHTMLでは無効ですが、HTMLでは有効です。

したがって、Bladeファイルが有効なXHTMLフラグメントであることを確認する必要があります。

+0

エンティティ、行:1 –

+0

でerro属性の構造エラーが発生しました –

0

私は同じ問題に直面していました。私はそれを下記のように修正しました。

$doc = new DOMDocument(); 
$doc->loadHTML($str); 
$doc->saveHTML(); 
\PhpOffice\PhpWord\Shared\Html::addHtml($section, $doc->saveHtml(),true); 
関連する問題