未生成超过 200 页的 PDF 文件,其中包含使用 wicked_pdf 页脚



Gemfile

gem 'wicked_pdf' 
gem 'wkhtmltopdf-binary', '~> 0.12.5'

控制器

def pdf_list
@lists = Domain.select(:domain_name, :ip_address, :priority)
respond_to do |format|
format.pdf do
render pdf: "pdf",
margin: {:top => 20, :bottom => 18},
page_size: 'A4',
template: 'domains/list.pdf.erb',
disposition: 'inline',
footer: {html: {template: 'domains/footer.pdf.erb'}}
end
end
end   

我已经使用 rails 中的wicked_pdf将 html 文件生成为 pdf 文件。

如果没有渲染页脚,我可以生成 300 多页的 pdf。

如果我在内容中包含页脚,pdf 文件不会使用 wicked_pdf 生成超过 200 页。

错误:

DomainListsController#pdf_list 中的运行时错误无法执行: ["/usr/local/bin/wkhtmltopdf", "--page-size", "A4", "--margin-top", "20", "--边距底部", "18", "--页脚-html", "file:////var/folders/v6/_516wg4d5rsdrhlb5sn82fbc0000gp/T/wicked_footer_pdf20191206-1975-o5qou2.html", "file:////var/folders/v6/_516wg4d5rsdrhlb5sn82fbc0000gp/T/wicked_pdf20191206-1975-16o6tkk.html", "/var/folder/v6/_516wg4d5rsdrhlb5sn82fbc0000gp/T/wicked_pdf_generated_file20191206-1975-1u66u16.pdf"] 错误:无法生成 PDF!命令错误:加载页面 (1/6( [> ] 0% [=======> ] 10% [================================> ] 50% [=

=======================================================>=================================================================

在日志文件中:

错误:加载失败 file:////var/folders/v6/_516wg4d5rsdrhlb5sn82fbc0000gp/T/wicked_footer_pdf20191206-1975-o5qou2.html?page=274&section=FULL 资产报告&网站页面=274&标题=完整资产 报告&子部分=&从页面=1&子部分=&isodate=2019-12-06&topage=275&doctitle=FULL 资产 REPORT&sitepages=275&webpage=file:////var/folder/v6/_516wg4d5rsdrhlb5sn82fbc0000gp/T/wicked_pdf20191206-1975-16o6tkk.html&time=11:07 AM&date=06/12/19,网络状态代码为 201,http 状态代码为 0 - 打开//var/folders/v6/_516wg4d5rsdrhlb5sn82fbc0000gp/T/wicked_footer_pdf20191206-1975-o5qou2.html 时出错: 打开的文件过多 错误:加载页面失败 file:////var/folders/v6/_516wg4d5rsdrhlb5sn82fbc0000gp/T/wicked_footer_pdf20191206-1975-o5qou2.html?page=274&section=FULL 资产报告&网站页面=274&标题=完整资产 报告&子部分=&从页面=1&子部分=&isodate=2019-12-06&topage=275&doctitle=FULL 资产 REPORT&sitepages=275&webpage=file:////var/folder/v6/_516wg4d5rsdrhlb5sn82fbc0000gp/T/wicked_pdf20191206-1975-16o6tkk.html&time=11:07 AM&date=06/12/19(有时忽略此错误即可 与 --加载错误处理忽略(

错误消息给了我们一个线索:

打开的文件过多

wicked_pdf很可能是从多个文件片段创建完整的文档。在 Linux 系统上,可以同时打开的文件数量有一个软限制和硬限制,并且似乎已达到此限制。因此错误。

要查看系统设置的当前软限制,您可以使用ulimit -n

> ulimit -n
1024

要查看增加软限制的可用余量,您可以检查硬限制

> ulimit -H -n
1048576

要增加当前 shell 的软限制,您可以执行以下操作:

> ulimit -n 5000
> ulimit -n
5000

现在从这个 shell 运行你的 Rails 服务器,然后重试。

但是,我的建议是提出一个wicked_pdf问题,因为这似乎是一个实现问题,可以在 gem 的代码中解决。

有关文件限制的详细信息,请参阅此处:
https://ultra-technology.org/linux_for_beginners/too-many-open-files-in-linux/

最新更新