Advertisement
Guest User

Untitled

a guest
Jan 18th, 2020
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.18 KB | None | 0 0
  1. // Básicamente, se hace un post request al servidor y se le manda el html que se quiere convertir a pdf.
  2. // En el servidor, una utilidad toma el html y lo convierte a PDF, guarda el archivo y regresa el enlace para descargarlo.
  3. // Luego el Javascript muestra un mensajito con el enlace de descarga
  4. // Para convertir el pdf se usa el paquete de laravel llamado laravel-dompdf
  5. // Para mostar el mensaje se usa un plugin llamado jquery-toast-plugin
  6.  
  7.  
  8. // Este es el código HTML como referencia... También está el código Javascript.
  9. <!DOCTYPE html>
  10. <html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
  11.     <head>
  12.         <meta charset="utf-8">
  13.         <meta name="viewport" content="width=device-width, initial-scale=1">
  14.  
  15.         <title>Laravel</title>
  16.     </head>
  17.     <body>
  18.  
  19.         <div id="contenido">
  20.             <div style="width:400px">
  21.                 <h2 style="color:red; text-align: center">Titulo</h2>
  22.                 <p style="text-align: center">Phasellus lacinia, augue ac dictum tempor, nisi felis
  23.                 ornare magna, eu vehicula tellus enim eu neque. Fusce est eros,
  24.                 sagittis eget, interdum a, ornare suscipit, massa. Sed vehicula
  25.                 elementum ligula. Aliquam erat volutpat. Donec odio. Quisque nunc.
  26.                 Integer cursus feugiat magna.
  27.                 </p>
  28.             </div>
  29.         </div>
  30.  
  31.         <button onclick="hacer()">Pasar a PDF</button>
  32.  
  33.         <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-toast-plugin/1.3.2/jquery.toast.min.css">
  34.         <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
  35.         <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-toast-plugin/1.3.2/jquery.toast.min.js"></script>
  36.         <script>
  37.             function hacer() {
  38.                 $.ajax({
  39.                     url: '/convertir',
  40.                     type: 'get',
  41.                     data: { html: $('#contenido').html() },
  42.                     success: response => {
  43.                         $.toast({
  44.                             text: `<a href="${response.ruta}" target="_blank">Descargar pdf</a>`,
  45.                             icon: 'success',
  46.                             hideAfter: false
  47.                         })
  48.                     },
  49.                     error: error => { alert('Error al procesar la solicitud') }
  50.                 });
  51.             }
  52.         </script>
  53.     </body>
  54. </html>
  55.  
  56.  
  57.  
  58. // Este es el código PHP, que crea el pdf
  59. // Recuerda que debes instalar el paquete laravel-dompdf haciendo un 'composer require barryvdh/laravel-dompdf'
  60. Route::get('/convertir', function (Request $request) {
  61.     $pdf = App::make('dompdf.wrapper');
  62.  
  63.     $pdf->loadHTML($request->html);
  64.  
  65.     // ruta donde va a guardar los pdf temporales
  66.     $ruta = '/temp';
  67.     // nombre del archivo pdf temporal
  68.     $nombreArchivo = 'hola.pdf';
  69.  
  70.     // crea el directorio $ruta
  71.     if (!is_dir(public_path($ruta))) {
  72.         mkdir(public_path($ruta), 0755, true);
  73.     }
  74.  
  75.     // guarda el pdf
  76.     $pdf->save(public_path("{$ruta}/{$nombreArchivo}"));
  77.  
  78.     // devuelve la url del pdf para descargar
  79.     return response()->json(['ruta' => asset("{$ruta}/{$nombreArchivo}")]);
  80. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement