El Ferrocarril Contra Los Arboles Muertos2
-
Upload
ferdinand13 -
Category
Technology
-
view
2.133 -
download
0
description
Transcript of El Ferrocarril Contra Los Arboles Muertos2
![Page 1: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/1.jpg)
El Ferrocarril contra
Los Árboles Muertos
Lleïr Borràs & Fernando Martínez
![Page 2: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/2.jpg)
¿Quiénes?
Lleïr Borràs Metje
Web: lleirborras.blogspot.com
twitter:
@lleirborras
Github:github.com/lleirborras
Trabajo:www.hesperides.cat
Fernando Martínez de la Cueva Web:www.sic-sl.com/fmc twitter: @oinak LinkedIn:www.linkedin.com/in/fernandomc
Trabajo:www.lciberica.es y www.sic-sl.com
Producto:www.lciberica.es/productos/psp
![Page 3: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/3.jpg)
«Rails es un Framework web...No lo decimos nosotros sino ellos
![Page 4: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/4.jpg)
...en un mundo de papel»
Nuestra vida esta rodeada de objetos hechos de papel o relacionados con él y es muy difícil dejarlo atrás de golpe:
Libros
Títulos de propiedad
Contratos
Periódico
Lista de la compra...
![Page 5: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/5.jpg)
Definamos aplicación:
[La cultura del árbol muerto]
![Page 6: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/6.jpg)
¿Por qué?
«You can't grep dead trees...... but you can read them in WC bed»
Los árboles muertos llegan donde aún no llegan las pantallas. Esto puede que mejore en el futuro a medio plazo con la tinta electrónica, o iniciatvas como Google Editions, el Crunchpad, los nuevos dispositivos Android...
![Page 7: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/7.jpg)
Odiosas comparaciones...
Tamaño / formato predecible Tamaño variable
Alta resolución ~300ppp
Márgenes imprescindibles
Predominantemente vertical
Baja resolución ~72ppp
Márgenes opinables
Vista ¿horizontal?
![Page 8: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/8.jpg)
¿To PDF or not To PDF? . . .
. . . that's the question
¿ ?
![Page 9: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/9.jpg)
¿Que tener en cuenta?
Compatibilidad con versiones Rails
Rapidez/facilidad (subjetiva) de desarrolloFacilidad (subjetiva) de modificar, mantener
Precisión de la salida (respecto a esperado/modelo)Soporte de Parciales
Control de rupturas (Saltos de Página)
Soporte/control de tipografías
Posibilidad de validación
Compatibilidad con navegadores
Rendimiento en máquina (aprox.)
Soporte de Imágenes
![Page 10: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/10.jpg)
HTMLDoc Gem
Web: http://www.htmldoc.orgGem: http://htmldoc.rubyforge.org
✔ HTML (plantillas existentes, mantenimiento) ✘ No soporta HTML > 3.2 (maquetación, validación) ✘ Paginación poco ortodoxa (tags especiales) ✘ Ejecutable aparte (rendimiento, deploy) ✘ Licencia doble (uso comercial*)
* IANAL: No somos abogados
![Page 11: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/11.jpg)
RTeX versiones 1 y 2
Versión 1 (Rails 1.x.x) Versión 2 (Rails >= 2.0.1)
✘ Sin partials ✔ Con partials
✘ Sin soporte IDE (¿alguien?) ✘ Sin soporte IDE (¿alguien?)
✘ Congelado (pero opensource) ✔ Activo
Web: http://rtex.rubyforge.org/
✔ Maquetación ortotipográfica ✔ Estilo uniforme ✘ Lenguaje/dominio nuevo (maquetador web)
✘ Posicionamiento difícil de precisar (recortable)
✘ Problemas con las imágenes (PNG, JPEG y GIF)
✘ Ejecutable externo (deploy de extensiones de LaTeX...)
✘ LaTeX pensado para lo contrario (diseño vs contenido)
![Page 12: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/12.jpg)
Jasper Reports
Web: http://jasperforge.org/projects/jasperreportsRails: wiki.rubyonrails.org/rails/pages/HowtoIntegrateJasperReports
✔Diseño por IDE (propio o plugin Eclipse/NetBeans) ✔Posicionamiento/maquetación (muy) preciso ✘ Lenguaje/dominio nuevo ✘ Requiere Java ✘ Funcionalidad limitada (cuando/como lo probamos) ✘ No se puede testear la vista
![Page 13: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/13.jpg)
![Page 14: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/14.jpg)
Prawn & PrawnTo
Web: http://prawn.majesticseacreature.com/Rails: http://www.cracklabs.com/prawnto
✘ Lenguaje/dominio nuevo ✘ Ruby (maquetador) ✔ Ruby (desarrollador) ✔ MVC (ahem ahem sí...) ✘ MVC (...pero no plantilla) ✘ Pesado(servidores x2)
✔ Preciso (el MÁS) ¡hasta recortables!
![Page 15: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/15.jpg)
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', '..','lib'))require 'prawn' Prawn::Document.generate("bounding_boxes.pdf") do bounding_box [100,600], :width => 200 do move_down 10 text "The rain in spain falls mainly on the plains " * 5 move_down 20 stroke do line bounds.top_left, bounds.top_right line bounds.bottom_left, bounds.bottom_right end end bounding_box [100,cursor], :width => 200, :height => 200 do stroke do circle_at [100,100], :radius => 100 line bounds.top_left, bounds.bottom_right line bounds.top_right, bounds.bottom_left end bounding_box [50,150], :width => 100, :height => 100 do stroke_bounds end endend
![Page 16: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/16.jpg)
Acts as flying saucer
Java: https://xhtmlrenderer.dev.java.net/Rails: http://github.com/dagi3d/acts_as_flying_saucer/ ✘ Requiere Java (rendimiento, deploy) ✔ Requiere Java (en entornos ruby) ✔ Plantillas XHTML Correcto (nativas de rails) ✘ Maquetación (limitado por CSS / Navegadores) ✔ Soporte partials, imágenes... ✔ Plantillas XHTML+CSS (maquetadores)
![Page 17: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/17.jpg)
/app/controllers/ejemplo_controller.rbacts_as_fying_saucerdef metodo #lógica del controlador
respond_to do |format| format.pdf do render_pdf :template => 'ejemplo/metodo', :send_file => { :filename => 'metodo.pdf' } end endend
/app/views/ejemplo/metodo.haml !!!XML!!!strict%html{html_attrs('es-es')} %head %title= @documento.datos[:titulo]
...
![Page 18: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/18.jpg)
(Lleïr's) Render as PDF
PHP: http://html2pdf.frRails: http://github.com/lleirborras/render_as_pdf ☹ Necesita PHP (>=4) en la máquina ☹ Consume mucha RAM en pdf's grandes (>250 pg.) ☹ Algunos tags especiales (<page_header>, <page_footer>, ...) ☺ Admite HTML 4.01 + CSS 2 ☺ Cabeceras y pies de página dinámicos. ☺ Admite muchos formatos de imágen (jpg, png, gif, ...) ☺ Admite códigos de barras ☺ Plantillas y helpers ☺ MUY rápido de maquetar (HTML)
![Page 19: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/19.jpg)
/app/controllers/ejemplo_controller.rbdef metodo respond_to do |format| format.html format.pdf do pdf_data = render_as_pdf :template => "/ejemplo/metodo.html.haml", :layout => false send_data pdf_data, { :type => "application/pdf", :filename => "nombre.pdf" } end endend
/app/views/ejemplo/metodo.haml !!!XML!!!strict%html{html_attrs('es-es')} %head %title= @documento.datos[:titulo]
...
![Page 20: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/20.jpg)
(Oinak's) Fly without the saucer
☑ No requiere Java/PHP/Plugins... (rendimiento, deploy) ☑ Plantillas XHTML Válido (nativas de rails) ☑ helpers, partials, reutilización... ☑ maquetadores web ☒ Renderizado: (limitados por CSS/soporte browsers) ☒ en.wikipedia.org/wiki/Comparison_of_layout_engines_(Cascading_Style_Sheets) ☑ Un modelo no AR (lib/módulo) con todos los datos (hash) ☑ testeos unitarios (thin controller) ☑ eficiencia (sin procesos extra) ☑ mantenimiento (por ejemplo: haml + sass)
![Page 21: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/21.jpg)
/lib/impresos/ejemplo.rbmodule Impresos class Ejemplo attr_accessor :datos def initializer(*params)... #recaba el hash :datos def render_options()... #decide la plantilla /app/controllers/ejemplo_controller.rbdef documento if @documento = Impresos::Ejemplo.new(params) render @documento.render_options else render(:nothing => true,:status => 404) endend /app/views/ejemplo/modelo/variante/documento.haml !!!XML!!!strict%html{html_attrs('es-es')} %head %title= @documento.datos[:titulo]
...
![Page 22: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/22.jpg)
(Lleïr's version) wicked_pdf
wkhtmltopdf: http://code.google.com/p/wkhtmltopdf/Rails: http://github.com/lleirborras/wicked_pdf ☹ Necesita wkhtmltopdf (webkit) ☺ En la web de wkhtmltopdf ya hay versiones compiladas para
GNU/Linux, Mac Os y windows ☺ No require PHP, Java, ... ☺ Plantillas y helpers ☺ MUY rápido de maquetar (HTML, haml, ...) ☺ Admite Javascript ☺ MUY rápido en hacer el render ☺ Soporta para algunos tags de CSS3
![Page 23: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/23.jpg)
/app/controllers/ejemplo_controller.rbdef show respond_to do |format| format.pdf do render :pdf => "name", :show_as_html => !params[:debug].blank? end endend
/config/initializers/wicked_pdf.rbWICKED_PDF = { :exe_path => '/usr/local/bin/wkhtmltopdf', :layout => 'pdf.html'}
/app/views/ejemplo/show.pdf.erb <h1>Hola en pdf!</h1>
$ script/plugin install git://github.com/lleirborras/wicked_pdf.git$ script/generate wicked_pdf
![Page 24: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/24.jpg)
/app/views/layouts/pdf.html.erb<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <%= stylesheet_link_tag "pdf" -%> <%= stylesheet_link_tag "#{RAILS_ROOT}/public/stylesheets/pdf" -%> </head> <body> <div id="content"> <%= yield %> </div> </body></html>
http://localhost:3000/ejemplo/X.pdf?debug=1
![Page 25: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/25.jpg)
En el tintero...
• PrinceXML: (http://www.princexml.com/)o Licencia de pago o Márgenes, paginación complicados
• ¿Público... ?
![Page 26: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/26.jpg)
¿Preguntas?
![Page 27: El Ferrocarril Contra Los Arboles Muertos2](https://reader034.fdocuments.net/reader034/viewer/2022052601/558ebc2c1a28ab801f8b46cf/html5/thumbnails/27.jpg)
Créditos (mantener al final)
Licencia del contenido: Creative Commons blabla
Ilustraciones:• [3] Old books: http://commons.wikimedia.org• [5] TUX-WC: Andrés Abad http://andresabad.wordpress.com• [6] 49 hand-drawing: Aleksandra Wolska http://iconfinder.net