Объединение файлов PDF, содержащих дополнительный контент - Ruby 2.2.4 - Rails 4
В проекте Rails 4 мне было поручено объединить страницу "about" в конец PDF-документов, которые были загружены с помощью Paperclip.
Проблема в том, что некоторые из загруженных PDF-файлов содержат необязательный контент. Я начал с использованием comb_pdf, но он не поддерживает файлы с необязательным содержимым, как описано здесь. Я пробовал Prawn, но он больше не поддерживает эту функцию. Наконец-то я нашел гем PDF Toolkit, но в документации ничего не говорится о дополнительной поддержке контента. PDF Toolkit - это инструмент командной строки, заключенный в Gem и, следовательно, работающий вне приложения Rails. Я попытался использовать эти примеры командной строки в моем CLI: pdftk file1.pdf file2.pdf cat output out_file.pdf
но терминал просто висит бесконечно.
Документация к драгоценному камню здесь очень неясна (для меня) и может быть источником моих проблем.
Я надеюсь найти совет о том, как этого добиться, используя PDF Toolkit ИЛИ лучшую библиотеку для объединения PDF-файлов с необязательным содержимым.
Я получил это далеко, исследуя вопросы переполнения стека, как это и это
Моя ОС OSX 10.11.6
existing_pdf_path = @report.document.file.path
# Create a html template and convert it to pdf
about_company_html = render_to_string("_about_company.html.erb", layout: false)
about_company_pdf = WickedPdf.new.pdf_from_string(about_company_html, orientation: 'Landscape')
# Save about_company_pdf to file in tmp/pdf
about_company_pdf_path = Rails.root.join('tmp/pdf', 'about_company_partial.pdf').to_s
File.open(about_company_pdf_path, 'wb') { |file| file << about_company_pdf }
# Create and save a blank target file we will save everything to
combined_pdf_path = Rails.root.join('tmp/pdf', 'combined.pdf').to_s
FileUtils.touch(combined_pdf_path)
# This returns false OR just hangs depending on my exact syntax, no error or backtrace
result = PDF::Toolkit.pdftk( *%w(existing_pdf_path about_company_pdf_path cat output combined_pdf_path) )
Я пробовал столько вариантов вышеупомянутого призыва к pdftk
как я могу найти или думать. Например PDF::Toolkit.pdftk( existing_pdf_path, about_lux_pdf_path, 'cat', 'output', combined_pdf_path )
без результатов.