Diferencia entre revisiones de «Usuario:ManuelRomero/Laravel/DOMPdf»

De WikiEducator
Saltar a: navegación, buscar
Línea 2: Línea 2:
 
*Primero debemos buscar la librería que tengamos de dompdf, buscamos en composer a ver si hay algo ya adaptado a laravel
 
*Primero debemos buscar la librería que tengamos de dompdf, buscamos en composer a ver si hay algo ya adaptado a laravel
 
*Para ello vamos a la página de composer [https://getcomposer.org/ getcomposer.org] y buscamos en paquetes
 
*Para ello vamos a la página de composer [https://getcomposer.org/ getcomposer.org] y buscamos en paquetes
[[Archivo:domPdfLaravel1.png|300px|center]]
+
[[Archivo:domPdfLaravel1.png|400px]]
 
*Buscamos un paquete que tenga la palabra '''''dompdf''''' y '''''laravel'''''.
 
*Buscamos un paquete que tenga la palabra '''''dompdf''''' y '''''laravel'''''.
[[Archivo:DompdfLaravel2.png|300px|center]]
+
[[Archivo:domPdfLaravel2.png|500px]]
 
*Lo instalamos vía composer, para ello modificamos el fichero '''''composer.json''''' en la etiqueta '''''require'''''de nuestro proyecto y actualizamos, de mode que nos quedará la sección require:
 
*Lo instalamos vía composer, para ello modificamos el fichero '''''composer.json''''' en la etiqueta '''''require'''''de nuestro proyecto y actualizamos, de mode que nos quedará la sección require:
<source lang=json>
+
<source lang=php>
 
"require": {
 
"require": {
 
         "php": "^7.2",
 
         "php": "^7.2",
Línea 59: Línea 59:
 
;Uso
 
;Uso
 
[[Archivo:domPdfLaravel4.png]]
 
[[Archivo:domPdfLaravel4.png]]
 +
*Ahora ya tenemos todo disponible para usarlo, vamos a crear una pequeña app para comporbar
 +
1.- Creamos la ruta para a través de un controlador mostrar una vista de usuarios
 +
*En el fichero '''''routes/web.php''''' agregamos la ruta:
 +
<source lang=php>
 +
Route::get("listadoUsuarios", 'UsuariosController@listado')->name("usuarios.list");
 +
Route::post("listadoUsuarios", 'UsuariosController@pdf')->name("usuarios.pdf");
 +
</source>
 +
2.- Creamos el controlador '''''UsuariosController''''' y el método '''''listado_usuarios''''' listado
 +
*Abrimos un terminal y en el directorio del proyecto, usando '''''artisan'''''
 +
<source lang=php>
 +
➜  php artisan make:controller UsuariosController
 +
 +
Controller created successfully.
 +
</source>
 +
3.- Creamos los métodos de ester controlador '''''listado()''''' y '''''pdf()'''''
 +
*En el fichero de la clase creado '''''app/Http/Controllers/UsuarioController.php'''''
 +
*Como contenido vamos a retornar dos vistas que en principio solo tendrán una línea de texto
 +
<source lang=php>
 +
class UsuariosController extends Controller
 +
{
 +
public function listado(){
 +
    return View::("usuarios");
 +
}
 +
 +
public function pdf(){
 +
    return View::("pdf/usuarios");
 +
 +
}
 +
}
 +
*Posteriormente modificaremos estos controladores, antes vamos a terminar el ciclo MVC creando las vistas y verficando que todo funciona ok.
 +
4.- Creamos las vistas
 +
 +
</source>
 +
*En este punto podemos probar que funciona mostrando simplemente un texto en cada función y viendo que lo visualizamos
 +
1.- Creamos una vista
 +
*Creamos una vista que nos permita descargar una página que tenga algo de información con un elementos susceptible de evento para que al presionarlo podemos ejecutar la generación del pdf (Mostrarlo y/o descargarlo)
 +
*Vamos a crear una lista de usuarios
 +
<source lang=html>
 +
<!doctype html>
 +
<html lang="en">
 +
<head>
 +
    <meta charset="UTF-8">
 +
    <meta name="viewport"
 +
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
 +
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
 +
    <title>Document</title>
 +
</head>
 +
<body>
 +
<h2>Listado de usuarios</h2>
 +
<hr/>
 +
<form action="" >
 +
    <input type="submit" value="crear PDF" name="submit">
 +
</form>
 +
</body>
 +
</html>
 +
</source>
 
*
 
*

Revisión de 05:43 23 feb 2020

Instalación de la librería

  • Primero debemos buscar la librería que tengamos de dompdf, buscamos en composer a ver si hay algo ya adaptado a laravel
  • Para ello vamos a la página de composer getcomposer.org y buscamos en paquetes

DomPdfLaravel1.png

  • Buscamos un paquete que tenga la palabra dompdf y laravel.

DomPdfLaravel2.png

  • Lo instalamos vía composer, para ello modificamos el fichero composer.json en la etiqueta requirede nuestro proyecto y actualizamos, de mode que nos quedará la sección require:
"require": {
        "php": "^7.2",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "^6.2",
        "laravel/tinker": "^2.0",
        "barryvdh/laravel-dompdf": "^0.8"
    },
  • Actualizamos el proyecto
 composer update
  • Una vex instalado, en la propia página de composer si clickamos sobre el paquete, nos aparece información de cómo actualizar los ficheros de configuración del proyecto para usarlo
Instalaciones

DomPdfLaravel3.png

  • Por lo que editamos nuestro fichero config\app.php y agregamos las dos líneas:
 
 
//............
'providers' => [
 
        /*
         * Laravel Framework Service Providers...
         */
//..........................
        /**
         * DomPdf
         */
        Barryvdh\DomPDF\ServiceProvider::class
 
    ],
 
    /*
    |--------------------------------------------------------------------------
    | Class Aliases
    |--------------------------------------------------------------------------
    |
    | This array of class aliases will be registered when this application
    | is started. However, feel free to register as many as you wish as
    | the aliases are "lazy" loaded so they don't hinder performance.
    |
    */
 
    'aliases' => [
//......................
        'PDF' => Barryvdh\DomPDF\Facade::class
 
    ],
Uso

DomPdfLaravel4.png

  • Ahora ya tenemos todo disponible para usarlo, vamos a crear una pequeña app para comporbar

1.- Creamos la ruta para a través de un controlador mostrar una vista de usuarios

  • En el fichero routes/web.php agregamos la ruta:
 Route::get("listadoUsuarios", 'UsuariosController@listado')->name("usuarios.list");
 Route::post("listadoUsuarios", 'UsuariosController@pdf')->name("usuarios.pdf");

2.- Creamos el controlador UsuariosController y el método listado_usuarios listado

  • Abrimos un terminal y en el directorio del proyecto, usando artisan
➜   php artisan make:controller UsuariosController
 
Controller created successfully.

3.- Creamos los métodos de ester controlador listado() y pdf()

  • En el fichero de la clase creado app/Http/Controllers/UsuarioController.php
  • Como contenido vamos a retornar dos vistas que en principio solo tendrán una línea de texto
class UsuariosController extends Controller
{
 public function listado(){
     return View::("usuarios");
 }
 
 public function pdf(){
     return View::("pdf/usuarios");
 
 }
}
*Posteriormente modificaremos estos controladores, antes vamos a terminar el ciclo MVC creando las vistas y verficando que todo funciona ok.
4.- Creamos las vistas
  • En este punto podemos probar que funciona mostrando simplemente un texto en cada función y viendo que lo visualizamos

1.- Creamos una vista

  • Creamos una vista que nos permita descargar una página que tenga algo de información con un elementos susceptible de evento para que al presionarlo podemos ejecutar la generación del pdf (Mostrarlo y/o descargarlo)
  • Vamos a crear una lista de usuarios

Idioma no válido.

Necesita especificar un idioma como esto: <source lang="html4strict">...</source>

lenguajes soportados para sintaxis remarcada:

4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, rails, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, spark, sparql, sql, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic


<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<h2>Listado de usuarios</h2>
<hr/>
<form action="" >
    <input type="submit" value="crear PDF" name="submit">
</form>
</body>
</html>