首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >pdfkit没有样式pdf

pdfkit没有样式pdf
EN

Stack Overflow用户
提问于 2011-11-08 08:42:46
回答 6查看 9.4K关注 0票数 19

我有一个rails 3.1应用程序,它使用pdfkit创建pdf文档,除了生成的pdf没有任何样式之外,一切都按规定工作。我假设wkhtmltopdf不能访问我的样式表,这不是一个更大的问题。有人知道如何允许访问这些样式表吗?在这个问题上,我基本上遵循了railscast #220,但是我不得不创建一个新的初始化器来使pdfkit与rails 3.1一起工作。

这是我用来使pdfkit与Rails3.1一起工作的初始化器

代码语言:javascript
复制
ActionController::Base.asset_host = Proc.new { |source, request|
  if request.env["REQUEST_PATH"].include? ".pdf"
    "file://#{Rails.root.join('public')}"
  else
    "#{request.protocol}#{request.host_with_port}"
  end
 } 

指向pdf的链接如下所示:

代码语言:javascript
复制
<%= link_to 'Download PDF', load_path(@load, :format => "pdf") %>

这会给我一个没有样式的pdf的链接。

在我的application.rb中,我已经这样配置了pdfkit:

代码语言:javascript
复制
config.middleware.use PDFKit::Middleware, :print_media_type => true

我还将其添加到了我的layout/application.html.erb文件中:

代码语言:javascript
复制
<%= stylesheet_link_tag    "application", :media => "all" %>
EN

回答 6

Stack Overflow用户

发布于 2013-08-13 04:15:58

https://github.com/pdfkit/pdfkit/blob/master/lib/pdfkit/middleware.rb找到的中间件代码中窃取了几行代码

您可以使用:

代码语言:javascript
复制
root = PDFKit.configuration.root_url || "#{env['rack.url_scheme']}://#{env['HTTP_HOST']}/"
html.gsub!(/(href|src)=(['"])\/([^\"']*|[^"']*)['"]/, '\1=\2' + root + '\3\2')

我的例子是:

代码语言:javascript
复制
html = render_to_string #render current action to string
root = PDFKit.configuration.root_url || "#{env['rack.url_scheme']}://#{env['HTTP_HOST']}/"
html.gsub!(/(href|src)=(['"])\/([^\"']*|[^"']*)['"]/, '\1=\2' + root + '\3\2')
kit = PDFKit.new(html, :print_media_type => true)
票数 6
EN

Stack Overflow用户

发布于 2012-02-23 05:10:51

我也遇到了这个问题,似乎在Rails 3.1中添加资产管道时,pdfkit的样式表链接有问题。请参阅有关此问题的GitHub issue

我最终转而使用wicked_pdf,并对它感到非常满意。他们已经解决了这个问题,并且它在Rails 3.2.x (还没有尝试3.1.x)上工作得很好。

票数 2
EN

Stack Overflow用户

发布于 2012-04-18 08:08:28

对我来说,这是ubuntu的安装问题。我刚刚从源码重新安装:

代码语言:javascript
复制
# first, installing dependencies
sudo aptitude install openssl build-essential xorg libssl-dev

# for 64bits OS
wget http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.9.9-static-amd64.tar.bz2 
tar xvjf wkhtmltopdf-0.9.9-static-amd64.tar.bz2
mv wkhtmltopdf-amd64 /usr/local/bin/wkhtmltopdf
chmod +x /usr/local/bin/wkhtmltopdf

# for 32bits OS
wget http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.9.9-static-i386.tar.bz2 
tar xvjf wkhtmltopdf-0.9.9-static-i386.tar.bz2
mv wkhtmltopdf-i386 /usr/local/bin/wkhtmltopdf
chmod +x /usr/local/bin/wkhtmltopdf

现在对我来说一切都好了。所以我的建议是,不要使用这个命令sudo apt-get install wkhtmltopdf安装wkhtmltopdf,而是从源代码安装它。用于安装过程的完整instructions

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

https://stackoverflow.com/questions/8044659

复制
相关文章

相似问题

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