ответ

6

Если вам нужно просто создать PDF-файл и не отображать его:

# create a pdf from a string 
pdf = WickedPdf.new.pdf_from_string('<h1>Hello There!</h1>') 

# create a pdf from string using templates, layouts and content option for header or footer 
WickedPdf.new.pdf_from_string(
    render_to_string(:pdf => "pdf_file.pdf", :template => 'templates/pdf.html.erb', :layout => 'pdfs/layout_pdf'), 
    :footer => {:content => render_to_string({:template => 'templates/pdf_footer.html.erb', :layout => 'pdfs/layout_pdf'})} 

# or from your controller, using views & templates and all wicked_pdf options as normal 
pdf = render_to_string :pdf => "some_file_name" 

# then save to a file 
save_path = Rails.root.join('pdfs','filename.pdf') 
File.open(save_path, 'wb') do |file| 
    file << pdf 
end 
5

Кроме того, вы можете сделать это:

render :pdf   => 'foo', 
     :save_to_file => Rails.root.join('public', "foo.pdf"), 
     :save_only => true 
+0

мгновенная любовь к этому ответу <3 – abhishek77in

+0

Что произойдет, если я запустил эту команду над чем-то вроде Героку? Будут ли они вызывать ошибку или зависать, так как heroku не предоставляет записываемую файловую систему. – abhishek77in

+1

@ abhishek77in Вы можете написать файловую систему в большинстве современных стеков Heroku, но вы не можете гарантировать, что она будет стоять, если дино будет перезапущен. В такой ситуации было бы лучше сохранить файл в ведро Amazon S3 или что-то в этом роде. Если вам нужно временно сохранить в файловую систему, лучше использовать '/ tmp'. – Unixmonkey

5

Это топ ответ на Как преобразовать строку в формате PDF в рубине на рельсах
И если вы не против, я поставлю один из ответов:
Некоторые услуги возвращают PDF как жало, как JVBERi0xLjQKJeLjz9MKNCAwIG9iago8PC9Ue. . . Вы можете создать PDF-файл из жала, с:

f = File.new("/tmp/file.pdf", "w") 
f.write(Base64.decode64(invoice[:file]).force_encoding('UTF-8')) 
f.close 

И затем вы можете открыть PDF файл с AcrobatReader или другим читателем PDF.
Пожелайте, это поможет.

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

  • Нет связанных вопросов^_^