From d345c5b793e76633b553177ee75f76c56c3508e7 Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Tue, 21 Nov 2023 20:09:51 -0500 Subject: [PATCH] LibPDF: Add (automated!) test for info dict encoding Manually added an info dict with the three text string encoding methods to encoding.pdf. (Preview.app apparently can't handle UTF-8 in info dicts!) --- Tests/LibPDF/TestPDF.cpp | 15 +++++++++++++++ Tests/LibPDF/encoding.pdf | 13 +++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/Tests/LibPDF/TestPDF.cpp b/Tests/LibPDF/TestPDF.cpp index 6b7a0060ec..24648427b5 100644 --- a/Tests/LibPDF/TestPDF.cpp +++ b/Tests/LibPDF/TestPDF.cpp @@ -44,6 +44,21 @@ TEST_CASE(empty_file_issue_10702) EXPECT(document.is_error()); } +TEST_CASE(encodig) +{ + auto file = MUST(Core::MappedFile::map("encoding.pdf"sv)); + auto document = MUST(PDF::Document::create(file->bytes())); + MUST(document->initialize()); + EXPECT_EQ(document->get_page_count(), 1U); + + auto info_dict = MUST(document->info_dict()).value(); + EXPECT_EQ(MUST(info_dict.author()).value(), "Nico Weber"); + EXPECT_EQ(MUST(info_dict.producer()).value(), (char const*)u8"Manüally Created"); + + // FIXME: Make this pass. + // EXPECT_EQ(MUST(info_dict.title()).value(), (char const*)u8"Êñ©•ding test"); +} + TEST_CASE(truncated_pdf_header_issue_10717) { AK::DeprecatedString string { "%PDF-2.11%" }; diff --git a/Tests/LibPDF/encoding.pdf b/Tests/LibPDF/encoding.pdf index 09a80e78e4..4e7d05cae7 100644 --- a/Tests/LibPDF/encoding.pdf +++ b/Tests/LibPDF/encoding.pdf @@ -32,17 +32,22 @@ endobj <> endobj +6 0 obj +</Producer(\357\273\277Man\303\274ally Created)/Title(\312\361\251\200ding test)>> +endobj + xref -0 6 -0000000000 65536 f +0 7 +0000000000 00001 f 0000000016 00000 n 0000000062 00000 n 0000000114 00000 n 0000000227 00000 n 0000000448 00000 n +0000000546 00000 n trailer -<> +<> startxref -546 +699 %%EOF