ユーザーがカスタム 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
。私が探しているのは、暗号化された PDF を取得し、暗号化されていないバージョンを保存して、それを Prawn テンプレートに使用できるツール (できれば Ruby) です。コードはおそらく次のようになります。
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 がそのような変換を行うことができることを知っています。ご提案ありがとうございます。