【发布时间】:2014-08-18 02:46:23
【问题描述】:
我正在使用 pdfkit(在后台使用 wkhtmltopdf)在我的 rails 应用程序中生成 PDF。遵循指南here 我已经得到它主要适用于PDF的基本案例。我现在在尝试生成包含大量页眉/页脚的 PDF 时遇到了问题。尝试生成 PDF 时,我在控制台中从 wkhtmltopdf 看到的错误是:
QEventDispatcherUNIXPrivate(): Unable to create thread pipe: Too many open files
QEventDispatcherUNIXPrivate(): Can not continue without a thread pipe
可用于重新创建错误的 html 的最小示例:
<!-- content of pdf_header_url is the character "h" -->
<meta content="<%= pdf_header_url %>" name="pdfkit-header-html"/>
<!-- content of pdf_footer_url is the character "f" -->
<meta content="<%= pdf_footer_url %>" name="pdfkit-footer_html"/>
<% [*1..3].each do |j|%>
<h1><%= j %></h1>
<ul>
<% [*1..1000].each do |i|%>
<li><%= i %></li>
<% end %>
</ul>
<% end %>
请注意,删除页眉/页脚标签可以使 pdf 呈现良好。
生成 PDF 的实际 ruby 代码是:
def view_report
html = render_to_string(:template => 'pdf/pdf_body.html', :layout => false)
kit = PDFKit.new(html)
pdf = kit.to_pdf
send_data pdf, :type => 'application/pdf', :disposition => 'inline', :filename => 'foo.pdf'
end
访问此控制器路由将生成 PDF。最后,我还有一个用于页眉/页脚的控制器,因为这些“部分”需要通过 url 获取:
class PdfController < ApplicationController
def header
render :layout => false
end
def footer
render :layout => false
end
end
为了一个最小的可重现示例,pdf_header_url 和 pdf_footer_url 的值实际上只是“h”和“f”。
是否有熟悉 wkhtmltopdf 的人对解决此问题的进一步调试步骤有任何建议?
【问题讨论】:
-
您能否展示您用于生成 PDF 的所有代码?以及
pdf_header_url和pdf_footer_url的值。我想尝试重现这个。
标签: ruby-on-rails ruby qt wkhtmltopdf