gpt4 book ai didi

css - wicked_pdf 和 Rails 不会使用 @import 加载 css

转载 作者:行者123 更新时间:2023-11-28 10:23:50 24 4
gpt4 key购买 nike

所以我正在使用 Wicked_pdf 并且我也尝试了 pdfkit。

两者都有同样的问题。也就是说,当我尝试引用导入部分 Bootstrap 的样式表时,pdf 转换失败。

这就是我在 Controller 中所做的

html = render_to_string(partial: "users/direct_deposit_info.html", layout: "layouts/pdf")
UserMailer.send_email(current_user.email,'Direct Deposit Information',content, html)

这就是样式表中不断破坏事物并导致其失败的内容:这是我的 print.css.scss:

@import 'bootstrap/variables';
@import 'bootstrap/print';
@import 'general';

这就是我在 layouts/pdf 中所做的。如果我删除对“打印”样式表的引用,它将成功转换为 pdf 并且一切正常,除了我的 pdf 没有完全样式化。如果我保留“打印”引用,它就会中断

<%= wicked_pdf_stylesheet_link_tag "fonts" %>
<%= wicked_pdf_stylesheet_link_tag "print" %>
<%= wicked_pdf_stylesheet_link_tag "application/direct_deposit_check" %>

这是我得到的错误:

Failed to execute:
"/Users/bdog/.rvm/gems/ruby-1.9.3-p448/bin/wkhtmltopdf" -q
"file:////var/folders/cn/9n6mzxt52d1c5j2lt3868rkr0000gn/T/wicked_pdf20140524-51775-1bjnzku.html"
"/var/folders/cn/9n6mzxt52d1c5j2lt3868rkr0000gn/T/wicked_pdf_generated_file20140524-51775- 1ysvtz9.pdf"
Error: PDF could not be generated!
Command Error:

所以我的问题是,在 Rails 中,有没有一种方法可以从这些导入中获取 css 到我的 html 中,而不用担心它?

我需要 Bootstrap 打印和变量 css,这样我的 general.css 文件就可以访问 Bootstrap 文件包含的变量。

编辑如果我将普通的 Rails 样式表链接标记添加到“print.css.scss”,这就是我在渲染的 html 文件中得到的:

<link href="//localhost:3000/assets/print.css?body=1" media="screen" rel="stylesheet" type="text/css" />

如果我使用 wicked_pdf_stylsheet_link_tag“打印”,则会出现相同的错误,并且在我呈现的 html 文件中没有链接引用或任何内容。

最佳答案

好的好消息,但仍然不明白发生了什么。事实证明链接正确呈现。在我的 _pdf.html.erb 布局文件中,我像这样链接样式表:

<style type='text/css'>
<%= raw Consumer::Application.assets.find_asset('fonts.css.scss').body %>
<%= raw Consumer::Application.assets.find_asset('print.css.scss').body %>
<%= raw Consumer::Application.assets.find_asset('application/direct_deposit_check.css.scss').body %>

当我将呈现的 html 保存到一个文件并在浏览器中打开它时,我确实得到了我正在寻找的样式正确的页面。然而,由于我需要的页面是在电子邮件中,它实际上并没有被发送,因为我的服务器仍在停止,就像我之前解释的那样。

经过进一步调查,由于我将呈现的 html 电子邮件保存到一个文件中,然后将该文件转换为 pdf 并将该 pdf 保存到一个文件中,我发现原始 html 得到了呈现和保存,但 pdf 没有t 所以我假设有问题的行是在我的 Controller 中创建我的 pdf 的行:(附加变量是我在第一篇文章 render_to_string(partial: "users/direct_deposit_info.html", layout: "layouts/pdf"))

File.delete("#{Rails.root.to_s}/tmp/dd_raw.html") if File.exist?("#{Rails.root.to_s}/tmp/dd_raw.html")     
File.write("#{Rails.root.to_s}/tmp/dd_raw.html", attach)

# Create new pdf from string
kit = WickedPdf.new.pdf_from_string(attach)

# save to file
file_path = "#{Rails.root.to_s}/tmp/direct_deposit_info.pdf"
File.delete(file_path) if File.exist?(file_path)

File.open(file_path, 'wb') do |file|
file << kit
end

编辑

我还尝试从命令行运行 wkhtmltopdf 命令并使用 --ignore-load-errors 无济于事。它呈现了一个空白的pdf。我确实得到了以下信息:Warning: Failed loading page http: (ignored)我想这与我在字体 css 中引用 url 有关。像这样:src: url(http://localhost:3000/assets/metric-thin.eot);

关于css - wicked_pdf 和 Rails 不会使用 @import 加载 css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23848398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com