diff --git a/Userland/Libraries/LibPDF/Document.cpp b/Userland/Libraries/LibPDF/Document.cpp index de1a373a95..72340e229c 100644 --- a/Userland/Libraries/LibPDF/Document.cpp +++ b/Userland/Libraries/LibPDF/Document.cpp @@ -116,7 +116,9 @@ PDFErrorOr Document::get_page(u32 index) else resources = adopt_ref(*new DictObject({})); - auto contents = TRY(raw_page_object->get_object(this, CommonNames::Contents)); + RefPtr contents; + if (raw_page_object->contains(CommonNames::Contents)) + contents = TRY(raw_page_object->get_object(this, CommonNames::Contents)); Rectangle media_box; auto maybe_media_box_object = TRY(get_inheritable_object(CommonNames::MediaBox, raw_page_object)); diff --git a/Userland/Libraries/LibPDF/Document.h b/Userland/Libraries/LibPDF/Document.h index 8880c653a2..787d37a3f2 100644 --- a/Userland/Libraries/LibPDF/Document.h +++ b/Userland/Libraries/LibPDF/Document.h @@ -30,7 +30,7 @@ struct Rectangle { struct Page { NonnullRefPtr resources; - NonnullRefPtr contents; + RefPtr contents; Rectangle media_box; Rectangle crop_box; float user_unit; diff --git a/Userland/Libraries/LibPDF/Renderer.cpp b/Userland/Libraries/LibPDF/Renderer.cpp index eb1f0681d2..945f93ab4c 100644 --- a/Userland/Libraries/LibPDF/Renderer.cpp +++ b/Userland/Libraries/LibPDF/Renderer.cpp @@ -85,6 +85,9 @@ Renderer::Renderer(RefPtr document, Page const& page, RefPtr Renderer::render() { + if (m_page.contents.is_null()) + return {}; + // Use our own vector, as the /Content can be an array with multiple // streams which gets concatenated // FIXME: Text operators are supposed to only have effects on the current