3

在 Rails 4 项目中,我的任务是将“关于”页面合并到通过 Paperclip 上传的 PDF 文档的末尾。

问题是一些上传的 pdf 包含可选内容。我开始使用combine_pdf但它不支持具有可选内容的文件,如此所述。我试过,但它不再支持这个功能。我终于找到了PDF Toolkit gem ,但文档没有说明可选内容支持。PDF Toolkit是一个命令行工具,它被封装在一个 Gem 中,因此在 Rails 应用程序之外运行。我曾尝试在我的 CLI 中使用这些命令行示例pdftk file1.pdf file2.pdf cat output out_file.pdf:但终端只是无限期挂起。

gem 的文档在这里(对我来说)非常不清楚,可能是我问题的根源。

我希望找到有关如何使用 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 )没有结果。

4

0 回答 0