2011-06-01 64 views
2

RuntimeError (PDF could not be generated! Error: Failed loading page http://worksWicked pdf在服务器上不起作用。但似乎在本地工作(似乎无法找到模板)

这是production.log。我确保在服务器上安装wkhtmltopdf(0.9.5)。并指定wicked_pdf初始化文件的wkhtmltopdf路径。

我曾尝试两种不同的方式来实现逻辑。

呈现PDF格式。这样

respond_to do |format| 
    format.pdf do 
     render :pdf   => "pdf_file_name", 
      :template => 'retailers/scorecard.pdf.erb' 
    end 
    end 

或模板保存到一个文件,这个文件发送给用户

file_name = "pdffile.pdf" 
    pdf = render_to_string :pdf => file_name, :template => 'retailers/scorecard.pdf.erb' 

    file_path = Rails.root.join("public", "pdfs", file_name) 
    File.open(file_path, 'wb') do |file| 
    file << pdf 
    end 

    send_file file_path 

他们两人都是在当地工作,但在服务器无法正常工作。和日志与上面相同。我能想到的唯一不同是My OS是mac,但服务器是Ubuntu。

btw我在服务器的命令行中使用wkhtmltopdf。有用。

+0

两个日志与上述相同或仅在生产所记录的信息是像上面的所述一个? – Arsen7 2011-06-01 10:03:05

+0

仅在服务器中。本地无论开发或生产工作都很好。我很迷惑为什么它试图找到“h t t p:// works”。 – raven 2011-06-02 03:04:14

+0

我已将您的解决方案移至社区wiki。 – 2017-08-29 17:38:32

回答

1

您是否在Ubuntu机箱上安装了X服务器? Wkhtmltopdf依赖于它,或者至少在xvfb上。 Xvfb取代了这种特殊情况下的图形环境。

如果你想要去xvfb的,你可以做到以下几点:

apt-get install xvfb  
Xvfb :1 -ac -screen 0 640x480x16 & 

2号线开始在可由wkhtmltopdf使用的背景一个xvfb的帧缓冲区。

确定您使用的是正确版本(32/64位),具体取决于您的系统架构!

+0

我在服务器的命令行中使用了wkhtmltopdf。有用。所以我认为这不是一个环境问题,而是一个配置问题。 – raven 2011-06-02 02:00:39

0

解决方案由OP。

使用另一种方式

file_name = "example.pdf" 
pdf = WickedPdf.new.pdf_from_string(render_to_string('example.pdf.erb')) 

    file_path = Rails.root.join("public", "pdfs", file_name) 
    File.open(file_path, 'wb') do |file| 
    file << pdf 
    end 

    send_file file_path