【问题标题】:How can I make a unencrypted copy of an encrypted PDF in ruby?如何在 ruby​​ 中制作加密 PDF 的未加密副本?
【发布时间】:2013-08-20 22:34:52
【问题描述】:

我有一个允许用户制作自定义 PDF 的应用程序。在后端,我们使用 Prawn 将更改添加到给定的 PDF。代码如下所示:

path_to_existing_pdf = '/path/to/test.pdf'
document = Prawn::Document.new margin: 0, template: path_to_existing_pdf

使用普通的 PDF(不加密),这工作得很好。但是,如果 PDF 启用了加密,Prawn 会抛出错误Prawn::Errors::TemplateError: Template file is an encrypted PDF, it can't be used as a template。我正在寻找的是一种工具(最好是 ruby​​),它可以获取加密的 PDF,保存未加密的版本,然后将其用于 Prawn 模板。代码可能类似于:

path_to_existing_pdf, document = '/Users/[]/Documents/test.pdf', nil
begin
  document = Prawn::Document.new margin: 0, template: path_to_existing_pdf
rescue Prawn::Errors::TemplateError
  path_to_existing_pdf = [encrypted to unencrypted conversion here]
  retry
end

并且澄清一下,用户一直上传加密的 PDF 是为了能够修改它们,所以这个问题不是如何规避用户的安全措施;这个问题更多地旨在为我的用户在使用我的应用程序时提供良好的体验。我想避免告诉用户只需保存其 PDF 的未加密副本然后上传到应用程序。

我知道 Preview.app 可以进行这样的转换,那么以编程方式进行这样的事情的最佳方法是什么?感谢您的任何建议!

【问题讨论】:

    标签: ruby-on-rails ruby encryption prawn


    【解决方案1】:

    在我过去从事的一个项目中,我们需要修改用户上传的 PDF(在某些情况下是加密的),我们使用程序 ps2pdfwr(它是 ghostscript 包的一部分)从原件。尽管有名称,但它会接受 PDF 文件作为输入。

    【讨论】:

    • 这对于去除加密非常有效,并且作为一个附带好处,它也倾向于减小 PDF 的大小。谢谢!
    猜你喜欢
    • 2012-11-30
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 2015-02-15
    • 2011-08-06
    • 2021-04-20
    相关资源
    最近更新 更多