rob*_*rty 37 pdf pdfkit wkhtmltopdf ruby-on-rails-3 osx-mountain-lion
在阅读之后,在我看来Prawn已经出局并且wkhtmltopdf已经进入.看起来Rails 的PDFKit和wicked_pdf宝石也是新的酷.所以我发现了Ryan关于如何使用PDFKit的截屏视频.我安装了所有东西,在CLI上测试wkhtmltopdf没有任何问题,摆弄Rails设置运行多个进程,所以资产管道工作,一切似乎都很好,除了我仍然停留在过程的最后(实际上得到PDF来自服务器的响应).
当我请求.pdf我的视图版本(我正在使用PDFKit中间件选项)时,我的浏览器就坐在那里等待响应,但是一旦我杀死了Rails进程,我希望得到的PDF只会在我的浏览器中弹出窗口.是什么赋予了?
wkhtmltopdf -V它时说0.10.0_rc2)config.middleware.use "PDFKit::Middleware"我的application.rb文件使用PDFKit中间件.gem 'pdfkit'在我的Gemfile中并与Bundler一起安装.pdf用我的mime_types.rb初始化程序设置mime-typeMime::Type.register_alias "application/pdf", :pdfconfig.threadsafe!到config/environments/development.rb多个线程,因此资产管道不与PDF引擎冲突wkhtmltopdf http://www.google.com google.pdf,它按预期生成了Google主页的PDF这是由Rails呈现的常规html页面(我已经模糊了客户端详细信息):

当我尝试导航到时,这是Rails的CLI输出localhost:3000/some/path.pdf.(应用程序在等待响应时挂起):

当我最终杀死Rails进程时ctrl-c,PDF终于出现在浏览器中,因为我期望看到它(CSS和HTML正确呈现,所以资产似乎加载正常):

为wicked_pdf交换PDFKit并获得相同的结果似乎让我觉得问题不在于那些库,而是与我的开发环境有关.但是wkhtmltopdf在命令行中运行良好,这让我觉得它和QT正在完成它们的工作.问题必须在Rails中.也许我没有正确配置?
如何确定问题到底是什么以及如何解决?
如果你能帮助我,我会爱你的<3
我也尝试过使用另一种方法来渲染PDF(with .to_pdf)而没有中间件选项,如下所示(这样做我config.middleware.use "PDFKit::Middleware"从我的application.rb文件中注释掉):
respond_to do |format|
format.html
format.pdf do
html = '<html><body>This is a test.</body></html>'
@pdf = PDFKit.new(html)
send_data @pdf.to_pdf,
:filename => 'whatever.pdf',
:type => 'application/pdf',
:disposition => 'attachment'
end
end
Run Code Online (Sandbox Code Playgroud)
sca*_*er2 70
问题出在wkhtmltopdf本身,特别是0.9.9之后的任何版本.wkhtmltopdf直接从命令行运行时挂起.
纠正的步骤:
brew uninstall wkhtmltopdf
cd /usr/local/Library/Formula/
git checkout 6e2d550 /usr/local/Library/Formula/wkhtmltopdf.rb
brew install wkhtmltopdf
Run Code Online (Sandbox Code Playgroud)
然后验证是否安装wkhtmltopdf --version了应该产生的正确版本wkhtmltopdf 0.9.9
引文:
试试最新版本.在MacOS上安装的简便方法:
brew install Caskroom/cask/wkhtmltopdf
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18687 次 |
| 最近记录: |