Tuesday, October 18, 2016

Gem Wkhtmltopdf Opciones Binarias

Tengo una aplicación de Ruby on Rails 3.2 usando la gema wickedpdf y la biblioteca wkhtmltopdf 0.9.9 para producir archivos PDF en mi máquina local, que es un MAC OSX 10.7.5 Lion. La aplicación convierte correctamente las páginas HTML (que incluyen imágenes SVG) en archivos PDF, que es el comportamiento exacto que apuntaba a que la aplicación cumpliera. En local, tuvimos que usar wkhtmltopdf 0.9.9 debido a un error en la versión 11.0.0 para OSX. El problema es que cuando la aplicación se empuja a la producción en Heroku, tiene que utilizar un binario diferente: wkhtmltopdf-0.9.9 binario estático de Linux (amd64) y la representación SVG parece desmoronarse. Se produce un PDF, pero las imágenes SVG no se representan correctamente. Son simplemente cascos blancos o cuadrados donde deben estar las imágenes. Intentamos usar la joya wkhtmltopdf-heroku, pero seguimos recibiendo un error de Broken Pipe. No hay mensaje de error relacionado con este problema y no sabemos dónde se encuentra el problema con las versiones de Linux. Cualquier idea por ahí Este es nuestro código en el archivo config / initializers / wickedpdf. rb: wkhtmltoimage 0.10.0 rc2 Manual Este archivo documenta wkhtmltoimage, un programa capaz de convertir documentos HTML en imágenes. Contacto Si experimenta errores o desea solicitar nuevas funciones, visite la página code. google/p/wkhtmltopdf/issues/list. Si tiene algún problema o comentario, no dude en ponerse en contacto conmigo: uuf6429gmail Licencia Copyright (C) 2010 wkhtmltopdf / wkhtmltoimage Autores. Licencia GPLv3: GNU GPL versión 3 o posterior gnu. org/licenses/gpl. Éste es software libre: usted es libre de cambiar y de redistribuirlo. No hay GARANTÍA, en la medida permitida por la ley. Autores Escrito por Jan Habermann, Christian Sciberras y Jakob Truelsen. Patches de Mehdi Abbad, Lyes Amazouz, Pascal Bach, Emmanuel Bouthenot, Benoit Garret y Mrio Silva. Sinopsis Opciones generales Los elementos marcados sólo están disponibles con QT parcheado. Especificación de un proxy Por defecto, la información de proxy se leerá de las variables de entorno: proxy, allproxy y httpproxy, las opciones de proxy también se pueden especificar con el conmutador - p Aquí hay algunos ejemplos (En caso de que no estés familiarizado con el BNF): El sitio web wkhtmltopdf puede descargar una versión estática de wkhtmltopdf code. google/p/wkhtmltopdf/downloads/list. Este binario estático funcionará en la mayoría de los sistemas y viene con una compilación en QT parcheado. Desafortunadamente el binario estático no es particularmente estático, en Linux depende tanto de glibc como de openssl, además tendrás que tener instalado un xserver pero no necesario. Necesitará tener fuentes diferentes instaladas, incluyendo xfonts-scalable (Type1) y msttcorefonts. Consulta la página code. google/p/wkhtmltopdf/wiki/static para obtener información sobre los problemas. Compilación Puede ocurrir que el binario estático no funcione para su sistema por una razón u otra, en ese caso puede que tenga que compilar wkhtml para imaginarse. Instalación Hay varias maneras de instalar wkhtmltoimage. Puede descargar un binario ya compilado, o puede compilar wkhtmlimagen usted mismo. Ejemplos Esta sección presenta una serie de ejemplos de cómo invocar wkhtmltoimage. Para convertir un archivo HTML remoto a PNG: Para convertir un archivo HTML local a PNG: Guardar el. pdf generado en disco La configuración de la cabecera PDFKit-save-pdf hará que PDFKit escriba el. pdf generado en el archivo indicado por el valor de El encabezado. Hará que el. pdf se guarde en path / to / saved. pdf además de ser enviado de vuelta al cliente. Si la ruta no es escribible / no existe, la escritura fallará en silencio. El encabezado PDFKit-save-pdf nunca se devuelve al cliente. Problema de hilo único: en entornos de desarrollo es común ejecutar un proceso de servidor único. Esto puede causar problemas al procesar su pdf requiere wkhtmltopdf para golpear su servidor de nuevo (para las imágenes, js, css). Esto se debe a que las solicitudes de recursos se bloquearán por la solicitud inicial y la solicitud inicial estará esperando en las solicitudes de recursos que causan un bloqueo. Esto no suele ser un problema en un entorno de producción. Para evitar este problema, puede ejecutar un servidor con varios trabajadores como Passenger o intentar incrustar sus recursos dentro de su HTML para evitar peticiones HTTP adicionales. Ejemplo de solución (rails / bundler), agrega unicornio al grupo de desarrollo en tu Gemfile gem unicorn entonces ejecuta bundle. A continuación, agregue un archivo config / unicorn. conf con Then para ejecutar la aplicación unicornrails - c config / unicorn. conf (from railsroot) Los recursos no están incluidos en el PDF: Imágenes, CSS o JavaScript no parece estar descargando correctamente en el PDF. Esto se debe al hecho de que wkhtmltopdf no sabe dónde encontrar esos archivos. Asegúrese de que está utilizando caminos absolutos (comience con la barra diagonal) a sus recursos. Si está utilizando PDFKit para generar PDF desde una fuente HTML sin procesar, asegúrese de utilizar rutas completas (ya sea rutas de acceso de archivos o urls incluyendo el dominio). En ambientes de servidor restrictivos la configuración de rooturl puede ser lo que usted está buscando para cambiar su anfitrión de activos. Mangled en el navegador: Asegúrese de que sus encabezados de respuesta HTTP especifiquen Content-Type: application / pdf Nota sobre parches / solicitudes de tracción Forque el proyecto. Configure su entorno de desarrollo con: gem install bundler bundle install Haga su adición de características o corrección de errores. Agregar pruebas para ello. Esto es importante para que no romperlo en una versión futura sin querer. Comprométete, no te metas con rakefile, versión o historia. (Si usted quiere tener su propia versión, que está bien, pero la versión de golpe en un commit por sí mismo puedo ignorar cuando me tire) Enviarme una solicitud de extracción. Puntos de bonificación para ramas temáticas. Copyright (c) 2010 Jared Pace. Consulte la LICENCIA para más detalles. Requisitos de Panopto Actualización El 29 de julio, Panopto requerirá que todas las grabadoras se actualicen a la versión 5.1 o 5.2. Se le pedirá que actualice su grabadora en esta fecha y no podrá utilizar Panopto hasta que su versión se actualice a 5.1 o 5.2. Si actualmente utiliza un equipo emitido por Maryville, póngase en contacto con el Centro de asistencia para completar la actualización. Aunque Panopto todavía está disponible, recomendamos usar nuestra nueva plataforma de video, Kaltura. Para futuras necesidades de grabación de video. Referencias Póngase en contacto con LDT con preguntas. Un complemento de generación de PDF para Ruby on Rails Wicked PDF utiliza la utilidad shell wkhtmltopdf para servir un archivo PDF a un usuario desde HTML. En otras palabras, en lugar de tratar con una generación de PDF DSL de algún tipo, simplemente escribir una vista HTML como lo haría normalmente, a continuación, dejar Wicked PDF cuidar de las cosas difíciles. Wicked PDF ha sido verificado para trabajar en Ruby versiones 1.8.7 a 2.3 Rails 2 a través de 5.0 Agregue esto a su Gemfile y ejecute el paquete de instalación: Luego cree el inicializador con Usted también puede tener que agregar a config / initializers / mimetypes. rb in older Versiones de Rails. Porque wickedpdf es un contenedor para wkhtmltopdf. Youll necesidad de instalar que, también. La forma más sencilla de instalar todos los binarios (Linux, OSX, Windows) es a través de la joya wkhtmltopdf-binario. Para instalarlo, agregue una segunda joya a su archivo Gemfile y ejecute la instalación del paquete. Esta envoltura puede rastrear en versiones, en el momento que envuelve la versión 0.9 de wkhtmltopdf mientras hay 0.12 versión disponible. Algunas de las opciones avanzadas listadas abajo no están disponibles con 0.9. Si su archivo ejecutable wkhtmltopdf no está en la ruta de su servidor web, puede configurarlo en un inicializador: Para obtener más información acerca de wkhtmltopdf. Ver la página principal de los proyectos. Condiciones de uso - Importante El binario wkhtmltopdf se ejecuta fuera de su aplicación Rails, por lo tanto, sus diseños normales no funcionarán. Si va a utilizar cualquier archivo CSS, JavaScript o de imagen, debe modificar su diseño para que proporcione una referencia absoluta a estos archivos. La mejor opción para Rails sin la canalización de activos es utilizar wickedpdfstylesheetlinktag. Wickedpdfimagetag Y wickedpdfjavascriptincludetag helpers o ir directamente a una CDN (Content Delivery Network) para bibliotecas populares como jQuery. El uso de wickedpdfhelpers con aumentos de pipeline de activos Los nombres de activos pasados ​​a los helpers no deben incluir el prefijo / assets /. error. Para evitar esto, puede utilizar wickedpdfassetbase64 con los auxiliares de Rails normales, pero tenga en cuenta que esto base64 codificará su contenido y lo en línea en la página. Esto es muy rápido para los activos pequeños, pero los grandes pueden tomar mucho tiempo. En este caso, puede utilizar los ayudantes estándar de Rails y señalar el CDN actual para el marco que esté utilizando. Para jQuery, se vería algo como esto, dadas las versiones actuales en el momento de esta escritura. Uso de la canalización de activos La manera de manejar esto para la canalización de activos en Heroku es incluir estos archivos en su lista de precompilación de activos, de la siguiente manera: Uso avanzado con todas las opciones disponibles De forma predeterminada, se procesará sin un diseño (layout: false) Plantilla para el controlador y la acción actuales. Wkhtmltopdf Opciones binarias Algunas de las opciones anteriores se pasan a wkhtmltopdf binario. Pueden utilizarse para controlar las opciones utilizadas en la renderización de Webkit antes de generar el PDF. Ejemplos de estas opciones son: Puede ver la lista completa de opciones en Opciones globales en documentos de uso de wkhtmltopdf. Uso Super Avanzado Si necesita crear un pdf y no mostrarlo: Si necesita mostrar los caracteres codificados utf, agregue esto a sus vistas o diseños pdf: Ahora puede usar un parámetro de depuración en la URL que le muestra el contenido de El pdf en html llano para diseñarlo más rápidamente. En primer lugar debes configurar el parámetro de render showashtml: params. key (debug) y luego usarlo como lo harías normalmente, pero agregar debug como un parámetro GET en la URL: Sin embargo, los helpers de wickedpdf utilizarán file: /// paths Para los activos cuando se utiliza: showashtml, y su característica de seguridad de dominio cruzado de navegadores se iniciará y no los procesará. Para evitar esto, puede cargar sus activos como en sus plantillas: Si no se puede encontrar una imagen de su HTML (ruta relativa o incorrecta para ie), otras imágenes con rutas correctas no se pueden mostrar también en el archivo PDF de salida ( Parece ser un problema con wkhtmltopdf). Usted puede haber notado: este plugin está muy inspirado en el PrinceXML plugin princely. El coste de PrinceXMLs era prohibitivo para mí. Así que, con un poco de ayuda de algunos amigos (gracias jqr), rastreé wkhtmltopdf, y aquí estamos. Fork it Crear su rama de funciones (git checkout - b my-new-feature) Ejecutar el conjunto de pruebas y comprobar la salida (rake) Añadir pruebas para su función o fijar (por favor) Confirmar sus cambios (git commit - am Agregar alguna característica) Pulsar a la rama (git push origen my-new-feature) Crear nueva solicitud de extracción También, gracias a unixmonkey. Galdomedia Jcrisp Lleirborras Tiennou Y todos los demás por todo su trabajo duro y paciencia con mis retrasos en la fusión en sus mejoras.


No comments:

Post a Comment