Путь к временному файлу Wicked PDF в Rails 5

Я создаю файл PDF с помощью Wicked:

pdf = WickedPdf.new.pdf_from_string('<h1>Hello There!</h1>')

Я предполагаю, что это где-то создает временный файл. Как я могу получить путь к этому временному файлу?


person almo    schedule 04.01.2018    source источник


Ответы (3)


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

pdf = WickedPdf.new.pdf_from_string('<h1>Hello There!</h1>', {temp_path: "your path here")

Перейдите по этой ссылке для получения дополнительных входных данных, которые содержат функцию, которую вы используете и входные данные, которые можно передать

person Athul Santhosh    schedule 05.01.2018
comment
temp_path на самом деле ожидает каталог папки, а не путь к файлу. Пожалуйста, проверьте github.com/mileszs/wicked_pdf/blob/master/ lib/wicked_pdf/ - person new2cpp; 15.01.2020

Проверяя источник WickedPDF, мы обнаружили TempFile

Временный файл должен быть создан во временном каталоге, как указано в options или Dir.tmpdir.

person Reuben Mallaby    schedule 04.01.2018
comment
Временный файл выглядит примерно так: /var/folders/5d/rk6vftfs7h52jxx2gxf35mjh0000gn/T/wicked_pdf_generated_file20180104-12707-151pvdz.pdf. Я понял это из журнала. Но мне интересно, как получить этот файл fpath + после создания PDF. - person almo; 04.01.2018

См. пример https://github.com/mileszs/wicked_pdf#super-advanced-usage.

Официальный пример использования File

pdf = render_to_string pdf: "some_file_name", template: "templates/pdf", encoding: "UTF-8"

# then save to a file
save_path = Rails.root.join('pdfs','filename.pdf')
File.open(save_path, 'wb') do |file|
  file << pdf
end

Вы можете использовать tempfile, чтобы сделать это как

pdf_string = WickedPdf.new.pdf_from_string(...)

overlay = Tempfile.new('overlay')
overlay.binmode
overlay.write(pdf_string)
overlay.close
overlay.path # to get path
person new2cpp    schedule 15.01.2020