我目前有一个带有特定控制器方法的模型,可以呈现PDF视图。
假设这个模型是dataBound
我在photographer_quote
控制器中有一个名为print_quote
的方法来完成这项工作。
以下是代码:
photographer_quote
一切都很好,当一个针对这个控制器方法的链接被操作时,它会动态创建PDF并在浏览器中呈现它。 (当然我有一个包含所有格式的视图......)
尽管如此,现在我想将此PDF创建放入队列(Sidekiq)并将其作为PDF文件保存到另一个模型中(我们称之为 @quote= Photographer_quote.find(params[:id])
respond_to do |format|
format.pdf do
render pdf: 'quote'+@quote.id.to_s
end
),该模型具有单个PDF Paperclip附件。
虽然我很难通过Paperclip将PDF保存在S3上。
邪恶的pdf提及:
PDF_quotes
我是否必须先在本地创建文件?如何使用名为# or from your controller, using views & templates and all wicked_pdf options as normal
pdf = render_to_string pdf: "some_file_name", template: "templates/pdf", encoding: "UTF-8"
# then save to a file
save_path = Rails.root.join('pdfs','filename.pdf')
File.open(save_path, 'wb') do |file|
file << pdf
end
PDF_quotes
答案 0 :(得分:1)
或许这会让你朝着正确的方向前进:
&#34;我是否必须先在本地创建文件?如何使用名为quote&#34;
的Paperclip附件将文件写入模型PDF_quotes你可以在内存中创建一个WickedPdf并直接管道到这样的Paperclip模型。
模型PDF_quote具有标准的Paperclip&#34; has_attached_file:quote&#34;
例如,在控制器中,您可以这样做:
# Generate PDF
pdf = WickedPdf.new.pdf_from_string(
render_to_string('your-pdf-template-in-html.pdf') # This is a view
)
# Stream PDF from WickedPdf to Paperclip PDF_quote.quote
# Content Type is automatically read by Paperclip (at least for application/pdf in my testing)
pdf_quote = PDF_quote.new(
# Other attributes here as well.....
quote: StringIO.new(pdf) # Pipe pdf to quote
)
pdf_quote.quote_file_name = "your_quote_file_name.pdf"
pdf_quote.save
您可以添加更多选项.pdf_from_string请参阅Paperclip GitHub。布局,页脚,标题等等......
我希望这有帮助!