Rails — создание PDF-файла, содержащего графики, которые видны только зарегистрированному пользователю

#ruby-on-rails #ruby #ruby-on-rails-4 #graph #wicked-pdf

#ruby-on-rails #ruby #ruby-on-rails-4 #График #wicked-pdf

Вопрос:

Мне нужно создать PDF-файл с использованием Rails по следующему сценарию:

На моем веб-сайте отображаются графики (круговая диаграмма и гистограмма) для зарегистрированных пользователей. Мне нужно добавить эти графики в файл pdf, который также будет содержать данные из базы данных. Примечание: Для создания графиков на веб-сайте я использую Google charts.

Когда я попытался создать простой PDF-файл с помощью WickedPdf.pdf_from_url(), он создает PDF-файл, но данные внутри — это вся страница входа. Мне нужно, чтобы PDF содержал только графики, которые видны после входа в систему. Примечание: я знаю, что вышеупомянутый плагин имеет ошибку сборки. Но я также пробовал другие альтернативы, но не смог решить проблему.

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

Код, который генерирует pdf со страницей входа:

 user = User.find(111)
sign_in(:user, user)  #Even though I am trying to sign_in the user, pdf shows login page.
pdf = WickedPdf.new.pdf_from_url(logged_in_url_pointing_to_a_specific_user)
save_path = Rails.root.join('pdfs','filename.pdf')
File.open('filename.pdf', 'wb') do |file|
  file << pdf
end
 

Скриншот сгенерированного PDF-файла:
введите описание изображения здесь

Комментарии:

1. прежде всего, было бы неплохо увидеть некоторый код. во-вторых, пробовали ли вы рендеринг с другим «макетом», на случай, если в макете есть все дополнительные биты со страницы входа.

2. @jad Я отредактировал свой вопрос, чтобы он содержал тестовый код. Я также попытался добавить логин пользователя перед вызовом WickedPdf. Но он все равно создает pdf страницы входа в систему.

3. хорошо, вам гораздо лучше использовать собственные процедуры «рендеринга», а не создавать PDF-файл по URL. он сохраняет все это в одной программе и позволяет использовать одни и те же разрешения: github.com/mileszs/wicked_pdf#basic-usage

4. @jad: я хотел бы создать PDF-файл из самого URL-адреса, поэтому предпочел бы решение с использованием .pdf_from_url(logged_in_url_pointing_to_a_specific_user). Прошу вас сообщить мне, если это возможно.

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