Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 未使用wicked_PDF生成页脚超过200页的PDF文件_Ruby On Rails_Ruby_Wicked Pdf - Fatal编程技术网

Ruby on rails 未使用wicked_PDF生成页脚超过200页的PDF文件

Ruby on rails 未使用wicked_PDF生成页脚超过200页的PDF文件,ruby-on-rails,ruby,wicked-pdf,Ruby On Rails,Ruby,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: {:

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   
> ulimit -H -n
1048576
我已经使用rails中的wicked_pdf生成了html文件到pdf文件

不渲染页脚,我可以生成超过300页的pdf

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

错误:

DomainListsController#pdf_列表中的运行时错误无法执行: [“/usr/local/bin/wkhtmltopf”、“--页面大小”、“A4”、“--页边空白顶部”, “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/folders/v6/_516wg4d5rsdrhlb5sn82fbc000gp/T/wicked_pdf_-generated_-file20191206-1975-1u66u16.pdf”] 错误:无法生成PDF!命令错误:加载页面(1/6) [> ] 0% [======> ] 10% [==============================> ] 50% [========================================>]50%

在日志文件中:

错误:无法加载 file:////var/folders/v6/_516wg4d5rsdrhlb5sn82fbc0000gp/T/wicked_footer_pdf20191206-1975-o5qou2.html?page=274§ion=FULL 资产报告&sitepage=274&title=FULL资产 报告&小节=&frompage=1;子小节=&isodate=2019-12-06;topage=275;doctitle=FULL 资产 报告和站点页面=275和网页=file:////var/folders/v6/_516wg4d5rsdrhlb5sn82fbc0000gp/T/wicked_pdf20191206-1975-16o6tkk.html&time=11:07 AM&date=06/12/19,网络状态代码为201,http状态代码为0 -打开//var/folders/v6/_516wg4d5rsdrhlb5sn82fbc000gp/T/wicked_footer\u pdf20191206-1975-o5qou2.html时出错: 打开的文件太多错误:加载页面失败 file:////var/folders/v6/_516wg4d5rsdrhlb5sn82fbc0000gp/T/wicked_footer_pdf20191206-1975-o5qou2.html?page=274§ion=FULL 资产报告&sitepage=274&title=FULL资产 报告&小节=&frompage=1;子小节=&isodate=2019-12-06;topage=275;doctitle=FULL 资产 报告和站点页面=275和网页=file:////var/folders/v6/_516wg4d5rsdrhlb5sn82fbc0000gp/T/wicked_pdf20191206-1975-16o6tkk.html&time=11:07 AM&date=06/12/19(有时忽略此错误即可 with--加载错误处理(忽略)


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

打开的文件太多

很可能是wicked_pdf从几个文件片段创建了完整的文档。在Linux系统上,可以同时打开多少文件有软限制和硬限制,而且似乎达到了这个限制。因此出现了错误

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

> ulimit -n
1024
要查看增加软限制的可用净空,您可以检查硬限制

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   
> ulimit -H -n
1048576
要增加当前外壳的软限制,可以执行以下操作:

> ulimit -n 5000
> ulimit -n
5000
现在从这个shell运行Rails服务器,然后重试

然而,我的建议是用wicked_pdf提出一个问题,因为这似乎是一个实现问题,可能会在gem的代码中解决

有关文件限制的更多信息,请参见此处:

是否尝试将
footer.pdf.erb
的内容作为footer放置到
list.pdf.erb
中。请检查一下这个方法,你会发现错误的。我已经试过了,但是页面的结尾只有页脚。我在循环13k记录。循环后,只有页脚出现。但是我需要所有带页脚的页面。添加此
show_as_html:true
添加show_as_html:true正在工作。但是它没有显示为pdf格式。正如错误所说,是运行时错误,这意味着您当前的资源无法以pdf格式编译文档。如果您在本地机器上工作,请尝试从具有教育资源的远程系统进行检查。