我正在使用wicked_pdf从html生成pdf现在,我想删除第一页/封面的上边距。
这是从我的控制器截取的代码:
render :pdf => @project.name,
:javascript_delay => 1000,
:disable_external_links => false,
:encoding => 'UTF-8',
:cover => "#{root_url}/projects/#{params[:id]}/pdf_cover",
:footer => {:html => { :template => 'projects/report_footer.pdf.haml' }, :spacing => 5},
:show_as_html => params[:debug].present?,
:disable_smart_shrinking => false,
:print_media_type => true,
:no_background => false,
:margin => { :top => 10, :bottom => 18 , :left => 0 , :right => 0}
如上所示,在控制器操作中,我将上边距设置为10。所以我希望上边距、页眉和页脚不显示在第一页上,而是显示在文档的其他页上。
附件区域
最佳答案
我看到你也在the Wicked PDF issue tracker
页眉、页脚和页边距对创建的pdf是全局的,因此不能单独调整封面。
但是,您可以创建两个pdf,一个只是封面,另一个是其他的,并将它们与ghostscript或pdftk结合起来。
Here's an example of how you might do that:
html_content = render_to_string
cover_pdf = WickedPdf.new.pdf_from_string(html_content, { footer: { margin: { bottom: 200 })
body_pdf = WickedPdf.new.pdf_from_string(html_content, { footer: { margin: { bottom: 10 })
cover_src_temp_file = Tempfile.new(['cover_src', '.pdf'])
cover_src_temp_file.binmode
cover_src_temp_file.write(cover_pdf)
cover_src_temp_file.rewind
cover_temp_file = Tempfile.new(cover_pdf)
`pdftk #{cover_src_temp_file} cat 1 output #{cover_temp_file.path.to_s}` # first page only
body_src_temp_file = Tempfile.new(['body_src', '.pdf'])
body_src_temp_file.binmode
body_src_temp_file.write(cover_pdf)
body_src_temp_file.rewind
body_temp_file = Tempfile.new(body_pdf)
`pdftk #{body_src_temp_file.path} cat 2-end output #{body_temp_file.path}` # everything else
output_temp_file = Tempfile.new(['output', '.pdf'])
`pdftk #{cover_temp_file.path} #{body_temp_file.path} cat output #{output_temp_file.path}`
send_file output_temp_file, disposition: 'inline'
[cover_src_temp_file, body_src_temp_file, cover_temp_file, body_temp_file, output_temp_file].each do |tf|
tf.close
tf.unlink
end
关于ruby-on-rails - 邪恶的PDF:如何从“封面”页面删除顶部页边距?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44434529/