Wicked_PDF 模板 image_tag / wicked_pdfimage_tag 不适用于 Rails API-only

WickedPDF template image_tag / wicked_pdf_image_tag not working on Rails API-only

我正在尝试使用 Wicked PDF 生成 PDF。到目前为止一切顺利,但是当我尝试添加图像时,我得到的只是空白框。我的图像在 ../app/assets/images/foo.png../public/images/foo.png 中用于测试目的。

据我了解,wicked_pdf_image_tag('foo.png') 将输出 <img src="file:///home/users/my_username/my_app_name/public/images/foo.png"> 因此我的图像在 /public/images 中,因此以下代码应该有效:

<%= wicked_pdf_image_tag("foo.png", width: 100, height: 100) %>    

...但它只是没有,它只给我一个空白框。我还尝试了以下所有方法:

    <%= image_tag Rails.root.join("app/assets/images/foo.png"), width: 100, height: 100 %>
    <img src="<%= Rails.root.join("app/assets/images/foo.png")%>" width="100" height="100">
    <%= image_tag Rails.root.join("public/images/foo.png"), width: 100, height: 100 %>
    <img src="<%= Rails.root.join("public/images/foo.png")%>" width="100" height="100">
    <%= wicked_pdf_image_tag("foo.png", width: 100, height: 100) %>
    <img src="<%= "images/foo.png"%>" width="100" height="100">

生成的都是这个

感谢任何帮助。提前致谢

更新:

我认为值得一提的是 Rails 应用程序仅 API。也就是说,我在我的 .erb 文件中添加了以下代码:

<%= image_tag image_url("foo.png"), width: 100, height: 100 %>

单独这样做是行不通的,但是如果我将 application_controller.rb class 更改为:

class ApplicationController < ActionController::API

至:

class ApplicationController < ActionController::Base

这是我发现的使图像出现的唯一方法。如果有人能对此提供见解,我将不胜感激。

我终于开始工作了。无需更改 application_controller.rb class。我所要做的就是指定图像的主机,然后像这样构造 URL 的其余部分:

wicked_pdf_image_tag("localhost:3000#{image_url("foo.png")}")

当然,一旦应用程序开始运行,宿主就会发生变化。因此,为此,我创建了一个助手来为我管理图像 URL:

def manage_image_url
    return case Rails.env
    when 'development' then 'http://localhost:3000'
    when 'develop' then 'https://yourpagehere.com'
    else 'https://yourotherpagehere.com'
    end
end

在生成 PDF 的控制器中,我将该方法的结果作为变量传递,最终代码应如下所示:

wicked_pdf_image_tag("#{manage_image_url}#{image_url("foo.png")}")

image_tag方法也可以。 请注意,如果您的 Rails 应用不是 API-only,您可能不需要这样做。 我仍然不确定是什么原因导致出现图像如果您尝试从资产或 public 文件夹加载它们,则不显示,但我的猜测是它与 API-only 应用程序的工作方式有关。祝你有美好的一天!

不知道你的时间......我希望你没事......尝试在你的应用程序控制器中添加这个:

class ApplicationController <ActionController::API
   include ActionController::Helpers
   #....
end

之后

 <%= image_tag("foo.png", size: "100")  %>

我过去也遇到过这个问题,如果我没记错的话我的问题是:

您缩进 wicked_pdf_image_tag 的方式有问题,您不应该像这样使用任何括号:

<%= wicked_pdf_image_tag 'foo.png', class: "my-class", size: "50x50" %>

您使用的 wicked_pdf 二进制版本