如何使用combine pdf gem将一个pdf文件存储在s3存储桶上时合并pdf

时间:2018-04-20 12:12:21

标签: ruby-on-rails pdf amazon-s3

在我的task表中,我可以访问存储在s3存储桶上的pdf文件@task&.assignable&.pdf_file。 我可以使用@task&.assignable&.pdf_file.file.url

访问其网址

我想在同一个pdf文件中添加新页面,因此我使用的是combine_pdf gem。我使用file1生成了wicked_pdf的路径但是在线

pdf << CombinePDF.load(@task&.assignable&.pdf_file.file.url)

显示错误:

没有这样的文件或目录@ rb_sysopen - https://patientiq1.s3-us-east-2.amazonaws.com/uploads/&lt; hashed_pa​​th&gt; .pdf? &LT; access_key&gt;

file1_path = Rails.root.join('tmp', filename)
pdf = WickedPdf.new.pdf_from_string(
  render_to_string('patient_engagements/signed_page', layout: 'pdf', locals: { :@signed_pdf => @signed_pdf })
)
File.open(file1_path, 'wb') do |file|
  file << pdf
end

pdf = CombinePDF.new
pdf << CombinePDF.load(file1_path) # one way to combine, very fast.
pdf << CombinePDF.load(@task&.assignable&.pdf_file.file.url)
pdf.save "combined.pdf"

1 个答案:

答案 0 :(得分:3)

您无法对远程文件使用加载,请改用<{3}}

require 'combine_pdf'
require 'net/http'

url = "https://example.com/my.pdf"
pdf = CombinePDF.parse Net::HTTP.get_response(URI.parse(url)).body

从CombinePDF文档中的parse中提取。