2017-06-08 108 views
2

我使用wicked_pdf從html生成pdf。現在,我想刪除第一頁/封面上的頂部邊距。Wicked PDF:如何從COVER頁面刪除頂部邊距?

這是從我的控制器剪斷代碼:

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} 

enter image description here

正如你可以在上面看到,在我的上邊距設置爲10的控制器動作。因此,我希望頂部邊距,頁眉和頁腳不會顯示在第一頁上,而是顯示在其他文檔頁面上。 附件區

回答

1

我看你還張貼這對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