From b73ce7bcd72a97c780176d9f63681a5415c06422 Mon Sep 17 00:00:00 2001 From: Henrique Nakashima Date: Mon, 19 Jun 2017 16:04:34 -0400 Subject: Fixing metadata not read from linearized file. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This still won't work if the info dict is not on the first page without first calling FPDFAvail_IsFormAvail or FPDFAvail_IsPageAvail, as these are the methods that trigger parsing the rest of the data. Bug: pdfium:664 Change-Id: I0b0193e415a1153dcfb8bfba0e0482da6b6ba53c Reviewed-on: https://pdfium-review.googlesource.com/6610 Commit-Queue: Henrique Nakashima Reviewed-by: dsinclair Reviewed-by: Nicolás Peña --- samples/pdfium_test.cc | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'samples') diff --git a/samples/pdfium_test.cc b/samples/pdfium_test.cc index 86f6f89d24..14aa6c187d 100644 --- a/samples/pdfium_test.cc +++ b/samples/pdfium_test.cc @@ -74,12 +74,14 @@ enum OutputFormat { struct Options { Options() : show_config(false), + show_metadata(false), send_events(false), pages(false), md5(false), output_format(OUTPUT_NONE) {} bool show_config; + bool show_metadata; bool send_events; bool pages; bool md5; @@ -625,6 +627,8 @@ bool ParseCommandLine(const std::vector& args, const std::string& cur_arg = args[cur_idx]; if (cur_arg == "--show-config") { options->show_config = true; + } else if (cur_arg == "--show-metadata") { + options->show_metadata = true; } else if (cur_arg == "--send-events") { options->send_events = true; } else if (cur_arg == "--ppm") { @@ -1108,6 +1112,19 @@ void RenderPdf(const std::string& name, (void)FPDF_GetDocPermissions(doc.get()); + if (options.show_metadata) { + const char* metaTags[] = {"Title", "Author", "Subject", "Keywords", + "Creator", "Producer", "CreationDate", "ModDate"}; + for (const char* metaTag : metaTags) { + char metaBuffer[4096]; + int len = FPDF_GetMetaText(doc.get(), metaTag, metaBuffer, 4096); + printf("%-12s = %ls (%d bytes)\n", metaTag, + GetPlatformWString(reinterpret_cast(metaBuffer)) + .c_str(), + len); + } + } + std::unique_ptr form( FPDFDOC_InitFormFillEnvironment(doc.get(), &form_callbacks)); form_callbacks.form_handle = form.get(); -- cgit v1.2.3