Home > database >  DomPDF is displaying output as HTML not as PDF document
DomPDF is displaying output as HTML not as PDF document

Time:07-31

I'm facing an issue with domPDF. pdf result getting displayed as html page not as pdf document. I'm trying to get the data from database and get the result in pdf document using 'dompdf' for laravel.

pdf-output-image

1

here is my HTML code.

    `<!DOCTYPE html>
<html>
<head>
    <title>MHT Order PDF</title>
    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP JcXn/tWtIaxVXM" crossorigin="anonymous"></script>

</head>
<body>
    <div  style="text-align: center; margin-top: -15px;">
        <h1 style="text-align: center" ><u> MAJESTIC HOUSE </u></h1>
        <p style="margin-top:-20px">General Trading LLC</p>

    </div>
    <div >
        @foreach($orderDtls as $order)
        <p >Date: {{$date}}</p>
        <h3 >Order Details </h3>
        <h5 >Order UID: <strong style="color: red;">{{$order->order_unq_id}}</strong></h5>
        <h5 >Customer Name: <strong style="color: red;">{{$order->customer_name}}</strong></h5>
        <p id="date">  </p>
    </div>
    <table  id="orderTable">
        <caption>Order Details</caption>
        <thead>
          <tr>
            <th scope="col">Customer Name</th>
            <th scope="col">Product Name</th>

          </tr>
        </thead>
        <tbody>
            @foreach($orderDtls as $order)
          <tr>
            <td scope="row">{{$order->customer_name}}</td>
            <td>{{$order->item_name}}</td>
          </tr>
          @endforeach
        </tbody>
    </table>
      @endforeach
</body>
</html>

this is the code from Controller

public function mht_order_pdf(){
    $customers = Customer::all();
    $linkeds = Linked::all();
    $orders = Order::all();
    $date = date('y-m-d');

    $orderDtls = DB::select("SELECT
            customers.customer_name,
            orders.id,
            orders.order_unq_id,
            items.item_name,
            orders.item_quantity,
            orders.total
        FROM customers
        JOIN linkeds
            ON customers.id = linkeds.customer_id
        JOIN items
            ON linkeds.item_id = items.id
        JOIN orders
            ON linkeds.id = orders.linked_id
        WHERE orders.order_unq_id = 'MH-Ord/29722/xyz supermarket';"
    );
    // // return $orderDtls;
    return view('mht_order_pdf', compact('customers', 'linkeds', 'orders', 'orderDtls', 
 'date'));
    

    $pdf = PDF::loadView('mht_order_pdf', $orderDtls);

    return $pdf->stream('mht_order_pdf.pdf');
}

this is the code from web.php

<?php

use App\Http\Controllers\Backend\CustomerController;
use App\Http\Controllers\Backend\ItemController;
use App\Http\Controllers\Backend\LinkedController;
use App\Http\Controllers\Backend\OrderController;
use App\Http\Controllers\Backend\ProductController;
use App\Http\Controllers\Backend\UserController;
use App\Http\Controllers\PDFController;
use App\Models\Customer;
use App\Models\Linked;
use App\Models\Order;
use App\Models\Product;
use Illuminate\Support\Facades\Route;
use Dompdf\Dompdf;
use Illuminate\Support\Facades\DB;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
return view('welcome');
});

Auth::routes();

Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])- 
>name('home');
Route::resource('users', UserController::class);
Route::resource('products', ProductController::class);
Route::resource('items', ItemController::class);
Route::resource('customers', CustomerController::class);
Route::resource('linked', LinkedController::class);
Route::resource('orders', OrderController::class);

Route::get('mht_order_pdf', [OrderController::class, 'mht_order_pdf'])- 
>name('mht_order_pdf');

PLEASE LET ME KNOW WHAT I'M DOING WRONG? Thank you!

CodePudding user response:

Your controller stops at this line:

return view('mht_order_pdf', compact('customers', 'linkeds', 'orders', 'orderDtls', 'date'));

thus the 2 lines below it, which related to the DomPDF, gets ignored. Try to delete the return view() above so that the DomPDF lines of code below it can be executed.

  • Related