Wicked PDF: как убрать верхнее поле с ОБЛОЖКИ?

Я создаю pdf из html, используя wicked_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. Поэтому я бы хотел, чтобы верхнее поле, верхний и нижний колонтитулы не отображались на первой странице, а отображались на остальных страницах документа. Область вложений


person abhsss96    schedule 08.06.2017    source источник


Ответы (1)


Я вижу, вы также разместили это в системе отслеживания ошибок Wicked PDF.

Верхние и нижние колонтитулы, а также поля являются глобальными для создаваемого PDF-файла, поэтому вы не можете настраивать титульную страницу независимо друг от друга.

Однако вы можете создать два PDF-файла, один только с обложкой, а другой — с остальными, и объединить их с помощью Ghostscript или PDFtk.

Вот пример того, как это можно сделать:

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
person Unixmonkey    schedule 10.07.2017