ruby on rails 4 - library - Las hojas de estilo de PDFkit*.css no se están aplicando
wkhtmltopdf latest version (2)
Estoy intentando convertir una página html que muestre imágenes desde facebook cdn a pdf usando pdfkit. Estoy usando rails 4.2, pdfkit 0.6.2 y wkhtmltopdf-binary 0.9.9.3.
# Gemfile
gem ''pdfkit''
gem ''wkhtmltopdf-binary''
# controller
def generate_pdf
@booklet = Booklet.find params[:id]
@cover = Image.last
@images = @booklet.images.sort_by(&:uploaded_at)
respond_to do |format|
format.html
format.pdf do
html = render_to_string(layout: true , action: "generate_pdf.html.haml")
kit = PDFKit.new(html, page_size: ''A4'', orientation: ''Landscape'')
`sass vendor/assets/stylesheets/bootstrap.scss tmp/bootstrap.css`
`sass vendor/assets/stylesheets/custom.scss tmp/custom.css`
kit.stylesheets << "#{Rails.root}/tmp/bootstrap.css"
kit.stylesheets << "#{Rails.root}/tmp/custom.css"
pdf = kit.to_pdf
send_data pdf, filename: ''booklet.pdf'', type: ''application/pdf''
end
end
end
# application.scss
@import ''bootstrap'';
@import ''custom'';
# config/application.rb
require ''pdfkit''
config.middleware.use PDFKit::Middleware
# config/initializers/mime_types.rb
Mime::Type.register "application/pdf", :pdf unless Mime::Type.lookup_by_extension(:pdf)
El PDF se está generando y se muestran las imágenes de cdn de Facebook, pero las hojas de estilo no se están aplicando. ¿Qué me estoy perdiendo?
He creado un repositorio de muestra para el problema anterior aquí: https://github.com/prasadsurase/topdf
FYI, el bootstrap.css y el custom.css se colocan en el proveedor / activos y las extensiones se han renombrado a scss. En sass, los recursos (fuentes e imágenes) han sido referidos usando ''font-path'' y ''image-url'' carriles auxiliares. Los activos se precompilaron y la aplicación -.... css se copió en pdf.css y los activos se derivan de la ruta raíz (/)
¿Bootstrap funciona correctamente para otras páginas en su aplicación? - El objetivo es asegurarse de que ha configurado correctamente las metaetiquetas para incluir los archivos de Bootstrap y de que está señalando los archivos de Bootstrap (que parecen estar en / tmp?)
Además, ¿en qué SO estás codificando? Puedo recomendar sustituir "#{Rails.root}/tmp/bootstrap.css"
con Rails.root.join(''tmp'',''bootstrap.css'')
Avíseme si estos ayudan en absoluto, o no.
Cambia a la gema wicked_pdf. Los ayudantes de activos incluidos funcionan muy bien y la gema en realidad está mejor organizada y documentada.