当我尝试在由wicked_pdf(wkhtmltopdf)生成的PDF中包含SVG时,它显示为空白。知道如何让svg显示在pdf中吗?
应用/视图/条码/ to_pdf.html.haml
<descriptive text here>
%object#code_image{:data=>"/barcodes/generate_svg?code=4567898", :type=>"image/svg+xml", :height=>70}
条形码控制器
def generate_svg
require 'barby'
require 'barby/barcode/code_128'
require 'barby/outputter/svg_outputter'
barcode = Barby::Code128B.new(params[:code])
render :text => barcode.to_svg({:height=>30, :width => 170})
end
def to_pdf
render :pdf => 'file_name'
end
答案 0 :(得分:7)
我使用这种嵌入SVG的方法让它工作。
Display Inline SVG Using the Tag
替换
"data:image/svg+xml;base64,PD94bWwgdmVy..."
与
"data:image/svg+xml;base64,#{Base64.encode64(barcode.to_svg)}"
答案 1 :(得分:3)
这就是我如何调整user1632065的答案,以便在html和pdf
中工作 你的GemFile中的
gem 'cairo'
gem 'barby'
在您的模型中
class ExampleModel
def barcode
require 'barby'
require 'barby/barcode/code_128'
require 'barby/outputter/cairo_outputter'
Barby::CairoOutputter.new(Barby::Code128B.new('bla bla this is barcode source'))
end
end
在你看来(在我的案例中是haml)
%img{:width => ExampleModelObject.barcode.width, :src=> "data:image/svg+xml;base64,#{Base64.encode64(ExampleModelObject.barcode.to_svg)}"}
这样就可以获得正确的条形码宽度
答案 2 :(得分:1)
我在我的一个Rails 3.0.x应用程序中使用wicked_pdf,它就像一个魅力。我使用直接嵌入到HTML(erb / haml视图)中的SVG代码。否或 - 只是具有给定'width'和'height'属性的纯标签。它不适用于某些浏览器(Opera,IE&lt; 9),但在我的情况下我并不关心。也许你可以试试这样的东西吗?