PDF Prawn: проблема с изображением, перекрывающим текст - PullRequest
0 голосов
/ 11 августа 2011

Я хочу разместить изображение в качестве фона на каждой странице. Это мой код:

Prawn::Document.generate("#{Rails.root.to_s}/public/#{filename}.pdf", :page_size => [576,576], :left_margin => 50,:right_margin => 50, :page_layout => :portrait, :skip_page_creation => true, :skip_encoding => true ) do |pdf|

  pdf.repeat :all do
    pdf.image open(APP_CONFIG['site_url']+"/images/pdf/bg_blank_high.jpg"), :at => [-pdf.bounds.absolute_left,  pdf.bounds.absolute_top], :width => 576, :height => 576
  end

  pdf.start_new_page(:margin => [75,50,50,50]) 
  pdf.fill_color "8c8464"
  pdf.text story.contents, :size => 12, :align => :left, :leading => 3 
end 

Проблема в том, что изображение переопределяет текст на всех страницах.

Есть ли способ нанести текст поверх изображения или сделать изображение «отправить назад» или какие-либо другие идеи?

Ответы [ 2 ]

1 голос
/ 05 декабря 2011

Кажется, что код в блоке повтора вызывается после рендеринга текста, таким образом помещая его 'над' текстом.Предоставленный фрагмент кода работает, потому что он касается только одного изображения.

prawn_document( filename:       "filename.pdf",
                background:     path_background_image) do |pdf|
...

Может работать для вас.Но он обеспечивает только изображения с низким разрешением (72 т / д).

Существует запрос на получение разрешения, позволяющий установить разрешение для фоновых изображений: https://github.com/sandal/prawn/pull/292

1 голос
/ 11 августа 2011

В руководстве по креветкам они приводят это в качестве примера изображения, покрытого текстом:

# images/absolute_position.rb
# One of the options that the image method accepts is :at. If you've read some of the graphics
# examples you are probably already familiar with it. Just provide it the upper-left corner where you
# want the image placed.
# While sometimes useful this option won't be practical. Notice that the cursor won't be moved after the
# image is rendered and there is nothing forbidding the text to overlap with the image.

y_position = cursor
text "The image won't go below this line of text."
image "#{Prawn::BASEDIR}/data/images/fractal.jpg", :at => [200, y_position]
text "And this line of text will go just below the previous one."

Так что из того, что я могу сказать, это может быть проблема с тем, как вы создаете документ или, возможно, вашразмещение курсора.

...