Remove pdf metadata

In order to remove metadata from PDF documents we will use the
exiftool_vendored gem.

The following line:
  Exiftool.new(attachment_path, "-overwrite_original -all:all=")
Overwrites the original file with another file without metadata.

So far this is the best solution we have found to perform this
metadata deletion.

When using Exiftool an exception is thrown, so we added a rescue
to handle it. Here is a task created where this problem is discussed
in issue 28 in the https://github.com/exiftool-rb/exiftool.rb/ repository.
We'll wait to see if this will be fixed in future versions.
This commit is contained in:
taitus
2023-05-08 09:43:30 +02:00
parent 4faa52b29d
commit 622f351dbf
3 changed files with 17 additions and 0 deletions

View File

@@ -9,6 +9,8 @@ class Document < ApplicationRecord
validates :documentable_id, presence: true, if: -> { persisted? }
validates :documentable_type, presence: true, if: -> { persisted? }
before_save :remove_metadata
scope :admin, -> { where(admin: true) }
def self.humanized_accepted_content_types
@@ -36,4 +38,13 @@ class Document < ApplicationRecord
def documentable_class
association_class
end
def remove_metadata
return unless attachment.attached?
attachment_path = ActiveStorage::Blob.service.path_for(attachment.key)
Exiftool.new(attachment_path, "-all:all=")
rescue Exiftool::ExiftoolNotInstalled, Exiftool::NoSuchFile
nil
end
end