在rails 4中,我使用wicked_pdf gem下载.pdf文件。我必须在这个pdf中添加一个图像,现在图像正在通过wicked_pdf_image_tag在开发中呈现,但是在测试环境中,映像(S3)并不呈现。
二手宝石是,
gem 'wicked_pdf', '1.0.3'
gem 'wkhtmltopdf-binary', '0.9.9.3'在初始化器中,
class WickedPdf
wkhtmltopdf_path = Rails.env.production? ? "#{Rails.root}/bin/wkhtmltopdf-amd64" : "#{Rails.root}/bin/wkhtmltopdf-amd64"
WICKED_PDF = {
:exe_path => wkhtmltopdf_path,
:wkhtmltopdf => wkhtmltopdf_path
}
end在控制器里,
respond_to do |format|
format.html {
render :pdf => "sample",
:margin => {:top => 10, :bottom => 10, :left => 10, :right => 10},
:orientation => 'Portrait', # default , Landscape,
:no_background => true
}
end在视图中,我尝试过加载
<%= Rails.env.development? ? wicked_pdf_image_tag("img/logo.png") : wicked_pdf_image_tag("#{Rails.root}/public/assets/img/logo.png") %>
<%= Rails.env.development? ? wicked_pdf_image_tag("img/logo.png") : wicked_pdf_image_tag("#{Rails.root}/assets/img/logo.png") %>
<%= image_tag(ActionController::Base.helpers.asset_path('img/logo.png')) %>如何在pdf文件中加载s3图像?
发布于 2016-07-28 11:36:55
您可以将图像放到s3桶中,并将其公之于众。在那之后,试试下面的样子。如果您在不同的环境中使用以下代码不需要使用单独的语法,那么它将适用于所有的.Hope --它可以工作。
<%= wicked_pdf_image_tag('//s3.amazonaws.com/bucket_name/image.png') %>发布于 2016-07-27 07:09:42
我使用过类似的功能,但使用了PDFKit gem。但我认为渲染逻辑几乎是相似的。
下面是我在控制器中呈现部分内容的代码
def print_batch
batch = Batch.find(params[:id])
respond_to do |format|
format.pdf {
html = render_to_string("_batch",:formats => [:html], layout: false , locals: { batch: batch })
Rails.logger.debug(html.inspect)
kit = PDFKit.new(html)
send_data(kit.to_pdf, :filename => "file_name_#{batch.id}.pdf", :type => 'application/pdf') and return
}
format.html
format.json { render json: {id: batch.id, processed: batch.processed?} }
end
end在_batch.html.haml.中你可以看到,我已经使用person.s3_logo来渲染这个pdf图像。
- logo_image_pdf = person.logo.present? ? person.s3_logo : default_credit_logo
- logo_image_html = person.logo.present? ? image_path(Person.logo.thumb('100x100').url) : image_path('default_credit_logo.png')
- logo_image = params[:format] == 'pdf' ? logo_image_pdf : logo_image_html
.bucks
%img.logo{src: logo_image }在Person.rb模型中。无论如何,我们不能从s3直接在PDF文件中呈现图像。因此,任何创业板都将首先在/tmp文件夹中下载并呈现它。这就是我在我的模型文件中所做的。
def s3_logo
file = open(self.logo.remote_url)
file.path if file
endhttps://stackoverflow.com/questions/38604090
复制相似问题