From c8e0db5061f57dd0a50e37102f518956edf36f5d Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Mon, 10 Jul 2023 09:00:30 -0400 Subject: [PATCH] pdf: Print info dict metadata if present --- Userland/Utilities/pdf.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/Userland/Utilities/pdf.cpp b/Userland/Utilities/pdf.cpp index b53cb7d668..60f94c25da 100644 --- a/Userland/Utilities/pdf.cpp +++ b/Userland/Utilities/pdf.cpp @@ -7,8 +7,32 @@ #include #include #include +#include #include +static PDF::PDFErrorOr print_document_info_dict(PDF::Document& document) +{ + if (auto info_dict = TRY(document.info_dict()); info_dict.has_value()) { + if (auto title = TRY(info_dict->title()); title.has_value()) + outln("Title: {}", title); + if (auto author = TRY(info_dict->author()); author.has_value()) + outln("Author: {}", author); + if (auto subject = TRY(info_dict->subject()); subject.has_value()) + outln("Subject: {}", subject); + if (auto keywords = TRY(info_dict->keywords()); keywords.has_value()) + outln("Keywords: {}", keywords); + if (auto creator = TRY(info_dict->creator()); creator.has_value()) + outln("Creator: {}", creator); + if (auto producer = TRY(info_dict->producer()); producer.has_value()) + outln("Producer: {}", producer); + if (auto creation_date = TRY(info_dict->creation_date()); creation_date.has_value()) + outln("Creation date: {}", creation_date); + if (auto modification_date = TRY(info_dict->modification_date()); modification_date.has_value()) + outln("Modification date: {}", modification_date); + } + return {}; +} + static PDF::PDFErrorOr pdf_main(Main::Arguments arguments) { Core::ArgsParser args_parser; @@ -31,6 +55,7 @@ static PDF::PDFErrorOr pdf_main(Main::Arguments arguments) TRY(document->initialize()); outln("{} pages", document->get_page_count()); + TRY(print_document_info_dict(*document)); return 0; }