首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pdfkit不呈现来自cdn + rails 4.2 + pdfkit的图像

pdfkit不呈现来自cdn + rails 4.2 + pdfkit的图像
EN

Stack Overflow用户
提问于 2015-03-30 17:23:22
回答 2查看 992关注 0票数 2

我正在尝试转换一个html页面,显示图像从facebook cdn到pdf使用pdfkit。我使用的是rails 4.2、pdfkit 0.6.2和wkhtmltopdf-二进制0.9.9.3。

代码语言:javascript
复制
# 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图像urls是n.jpg?oh=900fe52ecc9b93e044cae4917f538626&oe=559F41E9o.jpg

当我发送pdf请求时,我在服务器日志上得到以下输出

代码语言:javascript
复制
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)

pdf正在生成,但是本地图像(app/assets/ images )和cdn图像没有呈现在pdf中。此外,样式表没有应用在pdf中。我遗漏了什么?

已经为上述问题创建了一个示例存储库。这里:https://github.com/prasadsurase/topdf

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-07 04:50:32

我终于解决了图像问题。我从Gemfile中删除了wkhtmltopdf -二进制创业板,并将wkhtmltopdf库(版本为0.9.6)安装在框中

代码语言:javascript
复制
sudo apt-get install wkhtmltopdf

不幸的是,我无法在服务器上安装相同的版本。更好的方法是下载二进制文件并将其保存在应用程序中的bin文件夹中,并在pdfkit初始化程序中指定二进制文件的相对位置。这将消除版本问题。,样式表问题仍然存在( .css stylesheets not being applied)

票数 0
EN

Stack Overflow用户

发布于 2020-11-20 03:49:41

这个问题通常是由QT的SSL库引起的。如果更新wkthmltopdf没有帮助,那么找到合适的libssl-dev版本可能有助于解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29352403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档