3

ユーザーがカスタム 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 がそのような変換を行うことができることを知っています。ご提案ありがとうございます。

4

1 に答える 1

2

私が過去に取り組んだプロジェクトでは、ユーザーがアップロードした PDF を変更する必要があり、場合によっては暗号化されていましたが、オリジナルから保護を削除するためにGhostscriptパッケージps2pdfwrの一部であるプログラムを使用しました。名前にもかかわらず、入力として PDF ファイルを受け入れます。

于 2013-08-20T23:03:04.390 に答える