Повторите HTML на каждой странице, созданной с помощью Wicked PDF и Rails

Я создаю PDF с помощью драгоценного камня Wicked PDF на Ruby on Rails, но мне приходится повторять HTML-контент на каждой странице.

Я пытаюсь использовать только часть страницы для моего основного контента и использовать HTML, чтобы добавлять материал вокруг него на каждой странице.

Что-то вроде этого изображения (Проверить)

Я попытался поиграть с заголовком, но я не смог поместить контент перед HTML (даже используя z-index), и был в состоянии только расположить основное содержимое с полями и интервалами по вертикали (не нашел никаких вариантов сделать это горизонтально).

Есть идеи? Спасибо!

1 ответ

Решение

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

Я смог создать PDF-файл только с текстом (но с правильными полями) без фона, используя Wicked PDF. Понравилось это изображение. Я использовал это, чтобы просто сохранить файл.

Это был код для этого:

# Save PDF with only the text (with correct margins)
render :pdf => "text#{id}",
       :margin => {:top => "1.6in", :left => "4.1in", :right => "1.2in", :bottom => "2.5in"},
       :page_size => "Letter",
       :template => "careers/job_pdf_text.pdf.erb",
       :save_to_file => Rails.root.join('public/job_pdf_tempfiles', "text#{id}.pdf"),
       :save_only => true,
       :no_background => true

Затем я использовал RMagick для создания изображений из этого сохраненного PDF. Здесь важно то, что я сохранил GIF-файлы с прозрачным фоном, и Magick создает одно изображение для каждой страницы в PDF. Это был код для сохранения изображений:

# Save images from the only-text PDF
@text_images = []
text_images_magick = Magick::Image.read(Rails.root.join('public/job_pdf_tempfiles', "text#{id}.pdf"))
text_images_magick.each_with_index do |image, index|
    file_name = Rails.root.join('app/assets/images/careers_pdf', "text#{id}-#{index}.gif")
    image.write(file_name)
    @text_images << file_name
end

Итак, на данный момент у меня есть изображения текста, как это. Теперь я поместил их на HTML-страницу в правильном месте, а затем снова использовал Wicked PDF для рендеринга окончательного PDF. Я рендерил PDF с полем 0, и для каждого @text_images я создавал контейнер, из которого я размещал все остальное (включая само изображение), чтобы достичь того, что я хотел в начале.

Кто-нибудь есть лучшая идея, чтобы поделиться?

Другие вопросы по тегам