我正在尝试渲染包含Google地图的页面PDF,但是它始终显示为空。奇怪的是,当我使用wkhtmltopdf二进制文件调用url时,它实际上起作用了。我能缺少什么吗???这是我当前的设置
家庭控制器
class HomeController < ApplicationController
def index
respond_to do |format|
format.html
format.pdf do
render pdf: "Example PDF",
layout: 'pdf.html.erb',
show_as_html: params.key?('debug'),
javascript_delay: 3000
end
end
end
end
index.pdf.erb
<%- content_for :js do %>
<script src="//code.jquery.com/jquery-1.12.4.min.js"></script>
<script src = "//maps.googleapis.com/maps/api/js?&key=GOOGLE_API_KEY"></script>
<script src="//cdn.rawgit.com/mahnunchik/markerclustererplus/master/dist/markerclusterer.min.js"></script>
<script>
var map;
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: -34.397, lng: 150.644},
zoom: 8
});
}
$(window).load(function(){
initMap();
})
</script>
<% end %>
<h1>Google Map</h1>
<div id="map" style="width: 800px; height: 400px;"></div>
将debug设置为true(以查看用于呈现pdf的html)
当我使用wkhtmltopdf命令行实用程序时。可以正确呈现pdf。
$ wkhtmltopdf --javascript-delay 3000 http://localhost:4000/home/index.pdf?debug output.pdf
在Rails应用程序中我在做错什么吗?一些指针确实会有所帮助。谢谢!
答案 0 :(得分:0)
您是否尝试过使用WickedPdf.new.pdf_from_string
?
它看起来像这样:
家庭控制器
class HomeController < ApplicationController
def index
respond_to do |format|
format.html
format.pdf do
html = render_to_string(layout: 'pdf.html.erb')
pdf = WickedPdf.new.pdf_from_string(html, {show_as_html: params.key?('debug'), javascript_delay: 3000})
send_data pdf
end
end
end
end
不是最好的方法,但是您可以检查字符串以了解在生成pdf之前是否已正确生成了