1

我正在试验 Ghostscript 并处理必须保留在 Amazon S3 上的文件(我的应用程序在 Heroku 上运行)。我计划在我的 Heroku 帐户中使用 ghostscript 二进制文件来合并存储在 S3 上的 PDF 文档,如下所示:

gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -sOutputFile=3.pdf 1.pdf2.pdf

...其中 1.pdf、2.pdf 和 3.pdf 都在 S3 上。

这可能吗?

可以这样工作:

gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -sOutputFile=s3://mybucket/3.pdf s3://mybucket/1.pdf s3://mybucket/2.pdf

...凭证以某种方式被传递?

4

1 回答 1

0

似乎我想要做的事情在 Heroku 上是不切实际的或者是不可能的。通过进一步的研究,我发现可以使用 Heroku Rails 应用程序上的 #{$Rails.root}/tmp 文件夹作为便笺簿来创建合并的 PDF 文档,然后将其移动到 S3。

以下内容已经过测试并且可以正常工作(假设文件 1.pdf、2.pdf 和 3.pdf 已经在 Rails tmp 文件夹中):

system("gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -sOutputFile=#{Rails.root}/tmp/merged.pdf #{Rails.root}/tmp/1.pdf #{Rails.root}/tmp/2.pdf #{Rails.root}/tmp/3.pdf")
system("ls -al #{Rails.root}/tmp/")
file = File.open("#{Rails.root}/tmp/merged.pdf", "r")
data = file.read
AWS::S3::Base.establish_connection!(:access_key_id     => ENV['S3_ACCESS_KEY_ID'], :secret_access_key => ENV['S3_SECRET_ACCESS_KEY'])   
AWS::S3::S3Object.store("merged.pdf",data,ENV['S3_BUCKET_NAME'], :access => :private)
于 2012-11-01T20:57:05.040 回答