web-dev-qa-db-ja.com

Laravel Word文書へのブレードファイル)

私は私のコントローラーから私のブレードファイルにデータを渡してから、ブレードファイルをWord文書にエクスポートしたいと思うので、これまでのものはword文書にブレードを輸出することができます、この問題はマイクロソフトの単語で開かれていない問題です。 「単語が1.DOCXで判読不能なコンテンツを見つけました」と言います。以下は私が使っているコードです

$view = View::make('advertisement.advt_template.template_dr')->with('advtData', $advtData->first())->render();
$file_name = strtotime(date('Y-m-d H:i:s')) . '_advertisement_template.docx';
$headers = array(
            "Content-type"=>"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
            "Content-Disposition"=>"attachment;Filename=$file_name"
        );
return response()->make($view, 200, $headers);
 _
  • 私はデータをブレードに渡してから、すべての情報を変数に保存しています
  • 参照用のファイル名を作成します
  • ファイルをダウンロードするときに使用されるヘッダーを作成します
  • ブレードコンテンツ変数とヘッダ情報で応答をする

どんな助けにも感謝されます

5
kkarayat

これを達成する方法のデモンストレーションです。

[〜#〜] HTML [〜#〜]

<!DOCTYPE html>  
 <html>  
      <head>  
           <title>HTML to Word</title>  
           <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />  
           <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>  
           <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>  
      </head>  
      <body>  
           <br /><br />  
           <div class="container" style="width:800px;">  
                <br />  
                <h3 align="center">The Big Title</h3>  
                <br />  
                <form method="post" action="ROUTE_HERE">  
                     <label>Enter Title</label>  
                     <input type="text" name="heading" class="form-control" />  
                     <br />  
                     <label>Enter Description in HTML Formate</label>  
                     <textarea name="description" class="form-control" rows="10"></textarea>  
                     <br />  
                     <input type="submit" name="create_Word" class="btn btn-info" value="Export to Doc" />  
                </form>  
           </div>  
      </body>  
 </html>  
 _

コントローラー/ PHP

public function process(Request $request){
    $heading = $request->input('heading');
    $description = $request->input('description');

    header("Content-type: application/vnd.ms-Word");  
    header("Content-Disposition: attachment;Filename=".Rand().".doc");  
    header("Pragma: no-cache");  
    header("Expires: 0");  
    echo '<h1>'.$_POST["heading"].'</h1>';  
    echo $_POST["description"];
}
 _
0
Kiran Maniya
I'm using this and it works form me. You can try it
  $view = view('advertisement.advt_template.template_dr')->with('advtData', 
  $advtData->first())->render();
  $file_name = strtotime(date('Y-m-d H:i:s')) . '_advertisement_template.doc';
  $headers = array(
            "Content-type"=>"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
            "Content-Disposition"=>"attachment;Filename=$file_name"
        );
return Response::make($content,200, $headers);
 _
0