Объедините PDF-файлы с Active Storage - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь объединить несколько PDF-файлов в один загружаемый файл. У меня есть модель с несколькими названиями комнат, и к электронной почте прилагается файл PDF, который является макетом комнаты. Цель состоит в том, чтобы иметь возможность загрузить все макеты комнат на основе списка комнат. Я нашел гем comb_pdf, и он выглядит великолепно, просто, но я чувствую, что что-то упустил. Я получаю много «Нет такого файла или каталога @ rb_sysopen -», но когда я вырезал и вставил следующую ссылку, он работает нормально.

Текущий код

 def index
  @forms = Form.all
  @forms.each do |form|
    pdf = CombinePDF.new
    pdf << CombinePDF.load(url_for(form.image))
 end
end

Я не дошел до части загрузки, но документы говорят использовать send_data комбинированный_файл.to_pdf, имя файла: «комбинированный.pdf», тип: «application / pdf»

но как мне получить доступ к представлению с контроллера и сделать его загружаемым?

Обновление: мне удалось пройти все ошибки с помощью следующего кода. Но я не могу понять, как создать ссылку для загрузки

def index
 @forms = Form.all
 @pdf = CombinePDF.new
 @forms.each do |form|
   file = open('http://evanliewer.com/orientation/test.pdf')
   @pdf << CombinePDF.load(file.to_path)
 end
 @pdf.save "combined.pdf"
end

1 Ответ

0 голосов
/ 01 июля 2018

Был в состоянии понять это. Ниже находится контроллер:

require 'net/http'

def viewproject
  @forms = Form.all
  respond_to do |format|
    format.html
    format.pdf do
    pdf = CombinePDF.new
    @forms.each do |form|
      pdf << CombinePDF.parse( Net::HTTP.get( URI.parse( url_for(form.image.service_url) ) ) )
    end
    send_data pdf.to_pdf, :disposition => 'inline', :type => "application/pdf"
  end
end

конец

И вид

<%= link_to "Printable Receipt (PDF)", cabinpdf_path(@forms, format: 'pdf', disposition: "attachment") %>

Я возвращаюсь сейчас, чтобы все это почистить, но был рад, что смог это получить. Два секрета, которые я пропустил ранее, это активный вызов записи, чтобы найти, что URL работает лучше всего, если вы используете .service_url, и я использовал require 'net / http' для доступа к нему таким образом, поскольку путь не работал, так как он не был сохранен на местном уровне. В настоящее время он не работает на моем локальном компьютере (с использованием локального хранилища), но работает в рабочей среде с heroku.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...