2015-03-30 2 views
1

Я пытаюсь преобразовать html-страницу, которая отображает изображения из facebook cdn в pdf с использованием pdfkit. Я использую rails 4.2, pdfkit 0.6.2 и wkhtmltopdf-binary 0.9.9.3.pdfkit не отображает изображения из cdn + rails 4.2 + pdfkit

# 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', print_media_type: true) 
     kit.stylesheets << "#{Rails.root}/app/assets/stylesheets/application.scss" 
     pdf = kit.to_pdf 
     send_data pdf, filename: 'booklet.pdf', type: 'application/pdf', disposition: 'inline' 
    end 
    end 
end 

# application.scss 
@import 'bootstrap';                                   
@import 'custom'; 
@import 'jquery.booklet'; 
@import 'bootstrap-datepicker3'; 

# haml 
= link_to 'Download Booklet', generate_pdf_booklet_path(@booklet, format: 'pdf'), class: 'btn btn-primary' 

# 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) 

пример facebook CDN URL изображений являются https://scontent.xx.fbcdn.net/hphotos-prn2/v/t1.0-9/s720x720/560041_10200752471482799_613254552_n.jpg?oh=900fe52ecc9b93e044cae4917f538626&oe=559F41E9 и https://fbcdn-sphotos-g-a.akamaihd.net/hphotos-ak-xap1/t31.0-8/s720x720/906468_10201023370815113_668460846_o.jpg

Когда я отправить запрос PDF, я получаю следующий вывод на журнале сервера

Rendered booklets/generate_pdf.html.haml within layouts/application (671.3ms) 
QSslSocket: cannot resolve SSLv2_client_method 
QSslSocket: cannot resolve SSLv2_server_method 
QAbstractSocket::connectToHost() called when already looking up or connecting/connected to "fbcdn-sphotos-e-a.akamaihd.net" 
QAbstractSocket::connectToHost() called when already looking up or connecting/connected to "fbcdn-sphotos-e-a.akamaihd.net" 
QSslSocket::connectToHostEncrypted() called when already connecting/connected 
QSslSocket::connectToHostEncrypted() called when already connecting/connected 
QAbstractSocket::connectToHost() called when already looking up or connecting/connected to "fbcdn-sphotos-b-a.akamaihd.net" 
QAbstractSocket::connectToHost() called when already looking up or connecting/connected to "fbcdn-sphotos-b-a.akamaihd.net" 
QSslSocket::connectToHostEncrypted() called when already connecting/connected 
QAbstractSocket::connectToHost() called when already looking up or connecting/connected to "fbcdn-sphotos-f-a.akamaihd.net" 
QAbstractSocket::connectToHost() called when already looking up or connecting/connected to "fbcdn-sphotos-c-a.akamaihd.net" 
Rendered text template (0.0ms) 
Sent data booklet.pdf (1.4ms) 

Ф становятся генерируемыми но локальные изображения (app/assets/images) и ard-изображения arent, представленные в pdf. Кроме того, таблица стилей не применяется в pdf. Что мне не хватает?

html page with images from facebook cdn

generated pdf

Создали хранилище образцов для вышеуказанной проблемы. Здесь: https://github.com/prasadsurase/topdf

+0

Такая же проблема здесь, есть ли у вас обходной путь? –

ответ

0

Наконец-то мне удалось исправить проблему с изображениями. Я удалил wkhtmltopdf-бинарная камень из Gemfile и установили библиотеку wkhtmltopdf (версия 0.9.6) на коробке, как

sudo apt-get install wkhtmltopdf 

К сожалению, я не в состоянии установить ту же версию на сервере. Лучшим подходом было бы загрузить двоичный файл и сохранить его в своем приложении в папке bin и указать относительное местоположение двоичного файла в инициализаторе pdfkit. Это устранит проблемы с версией. FYI проблема стилей все еще сохраняется (PDFkit *.css stylesheets not being applied)

Смежные вопросы