es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Adjunta la imagen en el archivo PDF descargado utilizando el proveedor de servidor Laravel DomPDF.

Quiero adjuntar una imagen en mi PDF cuando se descargue el PDF. Estoy utilizando el proveedor de servicios dompdf en la versión 8 de Laravel. Estoy utilizando el método de ruta pública, pero la imagen aún no se adjunta al archivo PDF.

public function invoicepdf($productid, $orderId)
{
    $orderHistory = Order::where('order_id', $orderId)->orderBy('id', 'DESC')->first();
    $orderProductDetails[]=json_decode($orderHistory->product_details,true);

    foreach($orderProductDetails as $orderdata)
    {
        foreach($orderdata as $orderDetail )
        {
            if($orderDetail['product_id'] == $productid)
            { 
                $productDetails = $orderDetail; 
                $marchantdetails = UserData::where('user_id',$orderDetail['marchent_id'])->first();
            }
        }
    }

    $pdf = PDF::loadView('front_end.invoice',compact('orderHistory','productDetails','marchantdetails'))->setOptions(['defaultFont' => 'sans-serif']);

    // descargar el archivo PDF con el método download
    return $pdf->download('pdf_file.pdf');
}

Esta es mi función o método de descarga de PDF.

<div style="text-align: center;">
<img src="{{ public_path('public/image.png') }}" style="width: 100px; height: 100px;">
</div>

Este es el código de mi archivo de plantilla de PDF.

Ut aliquip ex ea commodoconsequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidata.

Este es mi código de archivo de vista de PDF.

Cuando utilizo esta función public_path, el PDF se descarga pero la imagen no se adjunta al archivo PDF. Por favor, ayúdame con esto.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para adjuntar una imagen a tu PDF cuando se descargue el PDF, puedes seguir los siguientes pasos:

    1. Asegúrate de tener la ruta correcta hacia tu imagen. Debería estar en el directorio “public” de tu proyecto de Laravel.
    2. Modifica tu función o método de descarga del PDF para incluir la imagen en el documento. Puedes utilizar la clase DOMPDF\Image para agregar la imagen al PDF.

    • Agrega el siguiente código antes de cargar la vista:

      use Dompdf\Dompdf;
      use Dompdf\Options;
      use Dompdf\Image;

    • Crea una instancia de Dompdf y establece las opciones:

      $dompdf = new Dompdf();
      $options = new Options();
      $options->set('defaultFont', 'sans-serif');
      $dompdf->setOptions($options);

    • Carga tu vista blade de PDF usando $dompdf->loadView().

    • Crea una instancia de Image y agrega la imagen al PDF:

      $image = Image::open(public_path('image.png'));
      $dompdf->getCanvas()->drawImage($image, 50, 50, 100, 100);

      Esto agregará la imagen al PDF en la posición (50, 50) con un ancho de 100 y una altura de 100.

    • Finalmente, descarga el PDF usando $dompdf->stream() o $dompdf->download().

      return $dompdf->download('pdf_file.pdf');

    1. Modifica tu archivo blade del PDF para eliminar la imagen.
    • Elimina el siguiente código:

      <div style="text-align: center;">
      <img src="{{ public_path('public/image.png') }}" style="width: 100px; height: 100px">
      </div>

      Esto se debe a que la imagen ahora se agrega dinámicamente en la función de descarga del PDF.

Comments are closed.