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.

Laravel MPDF carga múltiples vistas.

Estoy usando https://github.com/mccarlosen/laravel-mpdf para generar PDF’s en mi proyecto Laravel.

El código de muestra solo te permite generar un PDF a partir de un archivo.

use PDF;
class ReportController extends Controller {
  public function generate_pdf()
  {
    $data = [
      'foo' => 'bar'
    ];
    $pdf = PDF::loadView('pdf.document', $data);
    return $pdf->stream('document.pdf');
  }
}

Sin embargo, necesito la capacidad de generar un PDF a partir de 2 vistas blade separadas. Este es un ejemplo simplificado, pero básicamente quiero crear una instancia de PDF y luego poder agregar cualquier número de páginas/vistas a ella.

Algo como esto (no funciona):

use PDF;
class ReportController extends Controller {
  public function generate_pdf()
  {
    $data = [
      'foo' => 'bar'
    ];

    $pdf = new PDF();

    $pdf->loadView('pdf.document1', $data);
    $pdf->getMpdf()->AddPage();
    $pdf->loadView('pdf.document2', $data);

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

Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Solución

    Puedes lograr esto utilizando el método addPage() proporcionado por mPDF. Así es como puedes modificar el código para generar un PDF a partir de dos vistas de cuchilla separadas:

    use PDF;
    
    class ReportController extends Controller {
      public function generate_pdf()
      {
        $data = [
            'foo' => 'bar'
        ];
    
        $pdf = PDF::loadView('pdf.document1', $data);
    
        $pdf->getMpdf()->AddPage();
    
        $pdf->loadView('pdf.document2', $data);
    
        return $pdf->stream('document.pdf');
      }
    }
    

    En este ejemplo, primero cargamos la primera vista de cuchilla (pdf.document1) con los datos proporcionados. Luego utilizamos el método getMpdf() proporcionado por la clase PDF para obtener el objeto subyacente mPDF y agregar una nueva página utilizando el método addPage(). Después de agregar una nueva página, cargamos la segunda vista de cuchilla (pdf.document2) y devolvemos el PDF como un flujo.

    Este código debería generar ahora un PDF con dos páginas, una para cada vista de cuchilla.

Comments are closed.