使用ruby编辑现有pdf文件元数据(应用密码保护)

时间:2014-06-12 07:03:59

标签: ruby-on-rails ruby paperclip prawn

我正在使用paperclip将pdf文件上传到s3。我想动态地将密码保护应用到上传的pdf文件。

我尝试使用问题How to edit or write on existing PDF with Ruby?中给出的代码!编辑现有的pdf文件(回形针使用的tmp文件)并尝试使用

应用密码保护
Prawn::Document.generate("tmp/abc.pdf",:template => params[:ebook].path) do  encrypt_document(:user_password => 'foo', :owner_password => 'bar',
                :permissions => { :print_document => false,
                                  :modify_contents => false,
                                  :copy_contents => false,
                                  :modify_annotations => false }    end

模板支持是否仍然存在于大虾中,或者已被弃用,因为我在prawn manual中找不到任何关于模板的内容! ?

有没有其他方法或任何其他宝石这样做?

感谢。

1 个答案:

答案 0 :(得分:2)

template已在版本0.13.0中删除,因为它太错误了:

  

在Prawn 0.13.0中删除了对模板的支持,默认情况下在0.14.0中禁用,在0.15.0中提取。

     

此gem包含提取的模板代码,这些代码完全不受支持,但提供了Prawn 0.12.0中的旧功能多年。

来源:https://github.com/prawnpdf/prawn-templates

正如他所说,您可以尝试将库添加到当前的Prawn安装中。


否则,您可以将pdftkOpen3模块(http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/)一起使用:

require 'open3'

file_name = 'hello_world_1.pdf' # input
file_name_output = 'hello_world_2.pdf' # output

usr = 'foo'
pwd = 'bar'

pdftek = './pdftk.exe' # tested on windows

Open3.popen3("#{pdftek} #{file_name} output #{file_name_output} owner_pw #{pwd} user_pw #{usr}") do |stdin,stdout,stderr|
    # ...
end

还有一个红宝石的包装,但我还没有测试它:https://github.com/tcocca/active_pdftk