Saltar al contenido

evil_pdf Error: no se pudo generar el PDF

Luego de de una extensa recopilación de información hemos podido solucionar este atascamiento que suelen tener muchos los usuarios. Te brindamos la solución y nuestro deseo es resultarte de mucha apoyo.

Solución:

Yo tuve el mismo problema. La solución fue agregar wkhtmltopdf-binary al archivo gem y ejecutar bundle install.

gem "wicked_pdf"
gem "wkhtmltopdf-binary"

Yo Tuve wkhtmltopdf-binary Ya estoy en eso gemfilepero como esto funcionaba en mi computadora local y no en el servidor, dejé este error para que el equipo de soporte del servidor se preocupara… verificaron la ruta a wkhtmltopdf, intentaron convertir un html simple a pdf y funcionó. Así que trataron de ejecutar un bundle update comando y después de esto, la conversión de pdf también funcionó bien en el servidor. Cambié la ruta de una gema y supongo que este fue el problema. Publiqué mi solución en caso de que alguien más también tenga este problema.

Para Alpine 3.9+, el binario wkhtmltopdf está disponible, sin embargo, recibí un PDF en blanco o un error de “Error al cargar el documento”, a pesar de que funciona bien localmente en MacOSX. Resulta que debe incluir fuentes explícitamente para compilaciones alpinas (al menos)

Acción del controlador

def show
    respond_to do |format|
      format.html do
        render 'pdfs/templates/my_template.html.erb'
      end

      format.pdf do
        render(
          pdf: "file_name",
          template: 'pdfs/templates/my_template.html.erb',
          disposition: 'inline'
        )
      end
    end
end

Lo anterior funcionó localmente en una máquina MacOSX pero en un servidor basado en una imagen de Ruby Alpine, como se muestra a continuación, falló al cargar el documento

Dockerfile

FROM ruby:2.6.3-alpine3.10
....
# add wkhtmltopdf for use with wicked_pdf gem
RUN apk --no-cache add wkhtmltopdf
...

incluso un ejemplo más básico falló con un pdf en blanco

respond_to do |format|
  format.pdf do
    pdf = WickedPdf.new.pdf_from_string('TESTING 123')
    send_data(
      pdf,
      filename: "file_name.pdf",
      type: 'application/pdf',
      disposition: 'inline'
    )
  end
end

Solución

Dockerfile

FROM ruby:2.6.3-alpine3.10
....
# add wkhtmltopdf for use with wicked_pdf gem
RUN apk --no-cache add 
                  ttf-ubuntu-font-family 
                  wkhtmltopdf
...

Idealmente, Alpine incluiría una fuente básica con el wkhtmltopdf paquete, sin embargo, hasta ese momento encontré que esta es una fuente útil de información y/o buena para agregar un archivo Docker de varias etapas.

https://github.com/madnight/docker-alpine-wkhtmltopdf/blob/master/Dockerfile

NOTA:

la falta de un paquete de fuentes explícito en alpine también puede causar la conversión de PDF usando libreoffice fallar también. Encontramos archivos PDF corruptos cuando se convirtieron de archivos docx en particular.

valoraciones y reseñas

Te invitamos a añadir valor a nuestra información dando tu experiencia en las ilustraciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *