Commit 004c30b1 authored by Jordan Barnes's avatar Jordan Barnes
Browse files

Issue #3301331: Optimize Metadata Setting / Keywords

parent 536a9c5b
Loading
Loading
Loading
Loading
+20 −15
Changes for src/Service/MetadataCreationService.php: 20 added lines, 15 removed lines.
Original line number Diff line number Diff line
@@ -15,6 +15,10 @@ use Psr\Log\LoggerInterface;
use Monolog\Logger;
use PHPExiftool\Writer;
use PHPExiftool\Driver\Metadata\Metadata;
use PHPExiftool\Driver\Tag\XMPPdf\Title as XMPTitle;
use PHPExiftool\Driver\Tag\XMPPdf\Author as XMPAuthor;
use PHPExiftool\Driver\Tag\XMPPdf\Subject as XMPSubject;
use PHPExiftool\Driver\Tag\XMPPdf\Keywords as XMPKeywords;
use PHPExiftool\Driver\Tag\PDF\Title;
use PHPExiftool\Driver\Tag\PDF\Author;
use PHPExiftool\Driver\Tag\PDF\Subject;
@@ -232,24 +236,25 @@ class MetadataCreationService {
        $file_path = $this->fileSystem->realpath($file['file']->getFileUri());
        $metadata = $reader->files($file_path)->first()->getMetadatas();

        // We need to clear any previous metadata that might be in old format.
        // We need tag dc data for editing on Acrobat.
        $title = $metadata->get('XMPPdf:Title');
        $title ? $title->getValue()->set($file['metadata']['title']) : $metadata->add(new Metadata(new XMPTitle(), new Mono($file['metadata']['title'])));
        $author = $metadata->get('XMPPdf:Author');
        $author ? $author->getValue()->set($file['metadata']['author']) : $metadata->add(new Metadata(new XMPAuthor(), new Mono($file['metadata']['author'])));
        $subject = $metadata->get('XMPPdf:Subject');
        $subject ? $subject->getValue()->set($file['metadata']['subject']) : $metadata->add(new Metadata(new XMPSubject(), new Mono($file['metadata']['subject'])));
        $keywords = $metadata->get('XMPPdf:Keywords');
        $keywords ? $keywords->getValue()->set($file['metadata']['keywords']) : $metadata->add(new Metadata(new XMPKeywords(), new Multi($file['metadata']['keywords'])));

        // We need to tag regular pdf metadata.
        $title = $metadata->get('PDF:Title');
        $title ? $title->getValue()->set('') : '';

        $author = $metadata->get('PDF:Author');
        $author ? $author->getValue()->set('') : '';

        $title ? $title->getValue()->set($file['metadata']['title']) : $metadata->add(new Metadata(new Title(), new Mono($file['metadata']['title'])));
        $author = $metadata->get('PDFAuthor');
        $author ? $author->getValue()->set($file['metadata']['author']) : $metadata->add(new Metadata(new Author(), new Mono($file['metadata']['author'])));
        $subject = $metadata->get('PDF:Subject');
        $subject ? $subject->getValue()->set('') : '';

        $subject ? $subject->getValue()->set($file['metadata']['subject']) : $metadata->add(new Metadata(new Subject(), new Mono($file['metadata']['subject'])));
        $keywords = $metadata->get('PDF:Keywords');
        $keywords ? $keywords->getValue()->set('') : '';

        // Add new metadata.
        $metadata->add(new Metadata(new Author(), new Mono($file['metadata']['author'])));
        $metadata->add(new Metadata(new Title(), new Mono($file['metadata']['title'])));
        $metadata->add(new Metadata(new Subject(), new Mono($file['metadata']['subject'])));
        $metadata->add(new Metadata(new Keywords(), new Multi($file['metadata']['keywords'])));
        $keywords ? $keywords->getValue()->set($file['metadata']['keywords']) : $metadata->add(new Metadata(new Keywords(), new Multi($file['metadata']['keywords'])));

        $writer->write($file_path, $metadata);
      }