发布预览使用Laravel DOM pdf创建的pdf文档

时间:2014-11-26 11:19:24

标签: laravel-4 dompdf

我正在使用barryvdh的库DOMPdf从html生成pdf文档。我的目标是让用户在提交表单之前以pdf格式预览他们的发票。我正在使用Ajax将数据从表单传递给控制器​​。控制器从表单接收数据,但它返回一个我无法解码和显示的编码字符串。我想在弹出窗口中显示同一页面上的发票,但也可以将其设置为新窗口。 任何建议将不胜感激:

  1. Javascript代码:

    $(document).on("click", ".viewAsPdf", function(){
        var formID = $(this).closest("form").attr("id");
        var formHTML = document.getElementById(formID).innerHTML;
        var nettoTotal = "";
        var vatTotal = "";
        var bruttoTotal ="";
        var formData = ""; 
        var url="";
    
    switch(formID){
        case "demandOfferForm":
            nettoTotal = $(formHTML).find("#demandOfferTotalNetto").text();
            vatTotal = $(formHTML).find("#demandOfferTotalVat").text();
            bruttoTotal = $(formHTML).find("#demandOfferTotalBrutto").text();
    
            formData ="nettoTotal="+nettoTotal+"&vatTotal="+vatTotal+"&bruttoTotal="+bruttoTotal;
            console.log(formData);
            url ="../buy/newOffer/pdfOffer";
            var pdf = doAjaxCall(url, formData);
    
        break;
       }
       });
    
  2. Ajax调用

      function doAjaxCall(url, formData){
             $.ajax({
                type        : 'GET', 
                url: url,
                data        : formData, 
            })
            .done(function(data) {   
                 console.log(data);
                $('#demandOfferForm').fadeOut();
                $('#buyNewOffer').html(data);
    
            })
            // If the data hasn't beed received correct.
        .fail(function(data) {
            console.log(data);
        });
    }
    
  3. 控制器代码

    public function previewPDF(){
    $nettoTotal = Input::get("nettoTotal");
    $vatTotal = Input::get("vatTotal");
    $grossTotal = Input::get("bruttoTotal");
    $pdf = App::make('dompdf');
        $pdfContent ='';
        $pdfContent .='<DOCTYPE HTML><html>';
        $pdfContent .='<head></head><body>';
        // $pdfContent .='<head><link rel="stylesheet"   href="http://localhost/freesoft_front/public/css/pdf.css" type="text/css"></head><body>';
        $pdfContent .='<div class="pdfContent" style="position:absolute;">';
        $pdfContent .='<div class="companyInfo" style="position:absolute;">';
            $pdfContent .='<h4 style="padding:0; margin:0; text-align: right; line-height: 10px;">Faktura</h4>';
            $pdfContent .='<div class="header">';
    
                $pdfContent .='<div class="headerLeft" style="display: inline-block; width:50%; text-align: left;">';
                $pdfContent .='<div class="logoContainer" style="height: 50px; border: 1px solid blue;"><p>Company logo goes here</p></div>';
                $pdfContent .='<p>Hr. Hansen</p>';
                $pdfContent .='<p>Strømvej 2</p>';
                $pdfContent .='<br/> <p>5700 Svandeborg</p>';
                $pdfContent .='</div>';
    
                $pdfContent .='<div class="headerRight" style="display: inline-block; width:50%; text-align: right;"><p>DEMO Firma</p>';
                $pdfContent .='<p> 9560 Hadslund</p>';
                $pdfContent .='<p> Tlf: 44 55 90 17</p>';
                $pdfContent .='<p> <strong> FAKTURA NR. : 18540 </strong></p>';
                $pdfContent .='<br/> <p class="smallInput" style="font-size: 15px; line-height: 5px;">Dato: 15-09-2014</p>';
                $pdfContent .='<p class="smallInput"  style="font-size: 15px; line-height: 5px;">Forfaldsdato: 23-09-2014</p>';
                $pdfContent .='</div>';
    
                $pdfContent .='</div>';
                    // ------------end of header 
                $pdfContent .= '<div class="paymentDetails">';
                $pdfContent .='<div class="detailsLeft" style="display: inline-block; width:50%; text-align: left;">';
                $pdfContent .='<p class="smallInput"  style="font-size: 15px; line-height: 5px;"> Kundenr.: 358</p><br/>';
                $pdfContent .='<p class="smallInput"  style="font-size: 15px; line-height: 5px;"> Betailngsbet.: 8 dage</p>';
                $pdfContent .='<p class="smallInput"  style="font-size: 15px; line-height: 5px;"> Rentebet.: 1,3% rente pr. påb. måned</p>';
                $pdfContent .='</div>';
    
                $pdfContent .='<div class="detailsRight" style="bottom:0px; display: inline-block; width:50%; text-align: right;">';
                $pdfContent .='<p class="smallInput" style="font-size: 15px; line-height: 5px;"> Bank</p>';
                $pdfContent .='<p class="smallInput" style="font-size: 15px; line-height: 5px;">Kontonr.: 9999 0001234567</p>';
                $pdfContent .='</div>';
                $pdfContent .= '</div>';
                // ------------end of paymentDetails 
                $pdfContent .='<div class="invoiceLines">';
                    $pdfContent .='<div class="linesHeading" style="border-top:1px solid black; border-bottom: 1px solid black;">';
                        $pdfContent .='<p style="line-height:5px;">Tekst  <span style="margin:0px 0px 0px 350px;">Antal</span> <span style="margin:0px 0px 0px 75px;"> A pris</span> <span style="margin:0px 0px 0px 75px;">Nettobeløb</span></p>';
                    $pdfContent .='</div>';
    
                        // foreach ($lines as $index => $line) {
                        //  $pdfContent .='<p class="line"><span style="display: inline-block; width:55%;">'.$line ->  ItemName_Line .'</span>  <span style="display: inline-block; width:15%;">'. $line -> Quantity_Line .'</span> <span style="display: inline-block; width:17%;">'.$line -> Price_Line.'</span> <span style="display:inline-block; width:10%; text-align:right;">'.$line -> Netto_Total_Line.'</span></p>';
                        //  }
    
                $pdfContent .='</div>';
            // --------------end of invoice lines
                $pdfContent .='<div style="border-top:1px solid black; border-bottom: 1px solid black; position:absolute; bottom:0;">';
                    $pdfContent .='<p style="line-height:8px;"> <span style="display:inline-block;width:41%;"> Nettobeløb </span> <span style="display:inline-block; width:43.5%;"> Momsbeløb </span> <span style="text-align:right; display:inline-block; width:14%;"> Totalbeløb</span></p>';
                    $pdfContent .='<p style="line-height:2px;"> <span style="display:inline-block;width:41.5%;"> '.$nettoTotal.' </span> <span style="display:inline-block; width:43%;"> '.$vatTotal.' </span> <strong> <span style="text-align:right; display:inline-block; width:13.5%;">'.$grossTotal.'</span></strong></p>';
                $pdfContent .='</div>';
        $pdfContent .='</div>';
    $pdfContent .='</div>';
    $pdfContent .='</html></body>';
    
    
    $pdf->loadHTML($pdfContent);
    
    return $pdf->stream();
    }
    
    1. 输出摘录:
    2.   
          

      流x N @ y J t v %E R) + ')ű m ' 9 gc0 V I {F c T d e d ?.һ J @r l w w2Z 9 \ C6 `G'# Yҡ &gt; U e k / y )aS ~ %'Rf &安培;!QV E9Z“US = OX \ -1- * U ^ Qek'Bv”,纳米:sMacVE6FV(X |}੥vDK0&安培; 6rKc N +!C C吗?Gѥ6%#J-PR(uguS2ҵLHED.h vR “ Ih ۼ K7 O E 4 ,? Ơ5 ?

        

0 个答案:

没有答案