PDF文件使用wicked_pdf的页脚生成的页面不超过200页

问题描述 投票:0回答:1

Gemfile

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

Controller

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中的RuntimeError未能执行:[“ / usr / local / bin / wkhtmltopdf”,“ --page-size”,“ A4”,“ --margin-top”,“ 20”,“-margin-bottom”,“ 18”,“-footer-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/folders/v6/_516wg4d5rsdrhlb5sn82fbc0000gp/T/wicked_pdf_genic_file20191206-1975-1u66u16.pdf”]错误:无法生成PDF!命令错误:正在加载页面(1/6)[>] 0%[======>] 10%[===============================]] 50 %[==============================>> 50%

在日志文件中:

错误:加载失败文件:////var/folders/v6/_516wg4d5rsdrhlb5sn82fbc0000gp/T/wicked_footer_pdf20191206-1975-o5qou2.html?page = 274&section = FULL资产报告&sitepage = 274&title =全部资产REPORT&subsection =&frompage = 1&subsubsection =&isodate = 2019-12-06&topage = 275&doctitle =完整资产REPORT&sitepages = 275&webpage = file:////var/folders/v6/_516wg4d5rsdrhlb5sn82fbc0000gp/T/wicked_pdf20191206-1975-16o6tkk.html&time=11:07AM&date = 06/12/19,网络状态代码为201,http状态代码为0-打开错误//var/folders/v6/_516wg4d5rsdrhlb5sn82fbc0000gp/T/wicked_footer_pdf20191206-1975-o5qou2.html:打开的文件太多错误:加载页面失败文件:////var/folders/v6/_516wg4d5rsdrhlb5sn82fbc0000gp/T/wicked_footer_pdf20191206-1975-o5qou2.html?page = 274&section = FULL资产报告&sitepage = 274&title =全部资产REPORT&subsection =&frompage = 1&subsubsection =&isodate = 2019-12-06&topage = 275&doctitle =完整资产REPORT&sitepages = 275&webpage = file:////var/folders/v6/_516wg4d5rsdrhlb5sn82fbc0000gp/T/wicked_pdf20191206-1975-16o6tkk.html&time=11:07AM&date = 06/12/19(有时它可以忽略该错误与--load-error-handling忽略)

ruby-on-rails ruby wicked-pdf
1个回答
0
投票

错误消息为我们提供了一个线索:

打开的文件太多

[wicked_pdf最有可能从多个文件片段创建完整的文档。在Linux系统上,可以同时打开多少个文件存在软性和硬性限制,并且看来已达到此限制。因此出现错误。

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

> ulimit -n
1024

要查看用于增加软限制的可用净空,您可以检查硬限制

> ulimit -H -n
1048576

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

> ulimit -n 5000
> ulimit -n
5000

现在运行您的Rails服务器从此shell,然后重试。

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

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

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.