【问题标题】:laravel- how to generate pdf for invoice and purchase order?laravel-如何为发票和采购订单生成pdf?
【发布时间】:2020-03-05 06:35:38
【问题描述】:

我有一个查看页面,它返回客户为其订单购买的所有信息。和往常一样,订单附带发票和采购订单,作为管理员,我可以单击订单的发票并下载附件(显示在浏览器的左下方)。下载文件扩展名基于发票附件,但我想知道下载文件时是否有一种简单而优雅的方法来确保文件为 PDF 格式?

因此,让我们假设管理员检索客户订单的发票并填充视图。我假设我需要确保文件路径是 pdf 格式。我目前有blade.php 写的发票模板,但不知道如何从那里开始。

请指教。

发票:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Invoice</title>
 {{-- <link href="{{ asset('css/app.css') }}" rel="stylesheet">  --}}
   
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" />
  
</head>
<body>
    <div class="container">
        <div class="card">
      <div class="card-header">
     
        <span class="float-left " > <img src="{{ asset('images/Logo.png') }}" style="width:60%;" alt="No Logo"></span>
       
       <div class="float-center">

        <h4>DC Signature Livingstyle SDN BHD</h4>
        <small> 1-21-01,Menara Bangkok Bank,Berjaya Central Park,No 105,Jalan Ampang,50450 Kuala Lumpur,Malaysia </small><br>
        <small>603-02818821 &emsp;  bujishu@gmail.com &emsp;   www.bujishu.com </small>

       </div>
       
        <div class="float-right">
        <strong>Invoice:[Invoice Number]</strong> 
        <br> 
        <strong>[Date Placeholder]</strong> <br>
        <strong>Credit Term:[Cash]</strong> 
        </div>
      </div>
      <div class="card-body">
      <div class="row mb-4">
      <div class="col-sm-6">
      <h6 class="mb-3">From:</h6>
      <div>
      <strong>[Panel Name]</strong>
      </div>
      <div>[Address 1]</div>
      <div>[Address 2]</div>
      <div>Email:[panel_email]</div>
      <div>Phone: [panel_number]</div>
      </div>
      
      <div class="col-sm-6">
      <h6 class="mb-3">To:</h6>
      <div>
      <strong>[Customer Name]</strong>
      </div>
      <div> [Shipping address 1] </div>
      <div>[shipping address 2]</div>
      <div>Email:[customer_email]</div>
      <div>Phone: [customer_number]</div>
      </div>
      
      
      
      </div>
      
      <div class="table-responsive-sm">
      <table class="table table-striped">
      <thead>
      <tr >
      <th class="center">No</th>
      <th>Item</th>
      <th>Description</th>
      
      <th class="left">Quantity</th>
        <th class="center">Unit Price (RM)</th>
      <th class="right">Amount(RM)</th>
      </tr>
      </thead>
      <tbody>
      <tr>
      <td class="center">1</td>
      <td class="left strong">Electrical wire</td>
      <td class="left">Longest wire ever</td>
      
      <td class="center">1</td>
        <td class="left">999,00</td>
      <td class="right">999,00</td>
      </tr>
      <tr>
      <td class="center">2</td>
      <td class="left">Interior design</td>
      <td class="left">Instalation and Customization (cost per hour)</td>
      
      <td class="left">20</td>
        <td class="center">150</td>
      <td class="right">3.000,00</td>
      </tr>
      <tr>
      <td class="center">3</td>
      <td class="left">Table</td>
      <td class="left">Round table</td>
      
      <td class="left">1</td>
        <td class="center">499,00</td>
      <td class="right">499,00</td>
      </tr>
   
      </tbody>
      </table>
      </div>
      <div class="row">
      
      
      <div class="col-lg-4 col-sm-5 ml-auto " >
        <table class="table table-clear ">
        <th><strong> Payment Received </strong></th>
        <tbody>
          <tr style="page-break-after: always;">
            <td class="left">
              Payment Method: xxxxxx
            </td>       
          </tr>
          <tr>
            <td class="left">
              Reference No: 2192012
            </td>       
          </tr>
          <tr>
            <td class="left">
              Amount Paid: RM10,000.00 
            </td>       
          </tr>

          
          
          <tbody>
        </table>
      </div>
      
    
      
      </div>
      
      </div>
      
      </div>

      <h6 style="margin-left:30%;">This invoice is computer generated,no signature is required.</h6>
      </div>
     
    </div>
  

</body>
</html>

【问题讨论】:

  • 您可以使用一个名为 dompdf 的流行包来制作 pdf 格式的发票
  • @Moshiur 这个包也可以在浏览器上下载和查看吗?
  • 是的,当然请参阅文档
  • 请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Exchange 网络上发帖,您已在 CC BY-SA 4.0 license 下授予 Stack Exchange 分发该内容的不可撤销的权利(即无论您未来的选择如何)。根据 Stack Exchange 政策,帖子的非破坏版本是分发的版本。因此,任何破坏行为都将被撤销。如果您想了解更多关于删除帖子的信息,请参阅:How does deleting work?

标签: php laravel


【解决方案1】:

使用这个库

https://github.com/barryvdh/laravel-dompdf

浏览器视图

$pdf = PDF::loadView('pdf.invoice', $data);
return $pdf->stream('invoice.pdf');

用于下载

$pdf = PDF::loadView('pdf.invoice', $data);
return $pdf->download('invoice.pdf');

【讨论】:

  • 但是如果我的发票模板在invoice.blade.php,我如何将它传递给pdf?它会转换它吗?
  • 是的,这是代码 PDF::loadView('invoice', $data);它需要刀片视图
  • 嗨,不幸的是,只有当我的发票是基本的 html 时它才有效。一旦我将表格和所有内容都添加到其中,它会抛出一个错误,指出在 cellmap 中找不到框架。有什么解决办法吗?
  • 只有当您缺少任何标签或您的表结构不完整时才会发生这种情况。检查它的简单方法是返回 view();看看。如果仍然无法解决,请分享代码。
  • 我最近刚刚经历了这个过程。就我而言,专门为 PDF 创建视图更容易。 DOMPDF 没有正确渲染一些引导类,但总的来说,这是要走的路。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-10
  • 2020-03-07
  • 2021-02-18
  • 1970-01-01
相关资源
最近更新 更多