Прямо сейчас я использую Rails 3.0.0.i, уже установил gem wicked_pdf. Теперь, чтобы сохранить файл pdf в общей папке.please, помогите мне.Как сохранить PDF-файл в общей папке с помощью wicked_pdf
2
A
ответ
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
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.
Пожелайте, это поможет.
мгновенная любовь к этому ответу <3 – abhishek77in
Что произойдет, если я запустил эту команду над чем-то вроде Героку? Будут ли они вызывать ошибку или зависать, так как heroku не предоставляет записываемую файловую систему. – abhishek77in
@ abhishek77in Вы можете написать файловую систему в большинстве современных стеков Heroku, но вы не можете гарантировать, что она будет стоять, если дино будет перезапущен. В такой ситуации было бы лучше сохранить файл в ведро Amazon S3 или что-то в этом роде. Если вам нужно временно сохранить в файловую систему, лучше использовать '/ tmp'. – Unixmonkey