繁体   English   中英

Ruby on Rails无法生成地图内容为wicked_pdf的pdf

[英]Ruby on Rails unable to generate pdf with map content wicked_pdf

我正在尝试渲染包含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) 在此处输入图片说明

当我加载pdf网址时,地图部分未呈现 在此处输入图片说明

当我使用wkhtmltopdf命令行实用程序时。 正确呈现pdf。

$ wkhtmltopdf --javascript-delay 3000 http://localhost:4000/home/index.pdf?debug  output.pdf 

在此处输入图片说明

Rails应用程序中我在做错什么吗? 一些指针确实会有所帮助。 谢谢!

您是否尝试过使用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之前正确生成了该字符串

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM