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 gemfile
pero 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.