1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-14 07:14:58 +00:00

pdf: Honor page rotation

This commit is contained in:
Nico Weber 2024-02-25 09:40:21 -05:00 committed by Andreas Kling
parent 03fab7089a
commit b11aaca609

View file

@ -50,6 +50,8 @@ static PDF::PDFErrorOr<void> print_document_info(PDF::Document& document)
static PDF::PDFErrorOr<NonnullRefPtr<Gfx::Bitmap>> render_page(PDF::Document& document, PDF::Page const& page) static PDF::PDFErrorOr<NonnullRefPtr<Gfx::Bitmap>> render_page(PDF::Document& document, PDF::Page const& page)
{ {
auto page_size = Gfx::IntSize { 800, round_to<int>(800 * page.media_box.height() / page.media_box.width()) }; auto page_size = Gfx::IntSize { 800, round_to<int>(800 * page.media_box.height() / page.media_box.width()) };
if (int rotation_count = (page.rotate / 90) % 4; rotation_count % 2 == 1)
page_size = Gfx::IntSize { round_to<int>(800 * page.media_box.width() / page.media_box.height()), 800 };
auto bitmap = TRY(Gfx::Bitmap::create(Gfx::BitmapFormat::BGRx8888, page_size)); auto bitmap = TRY(Gfx::Bitmap::create(Gfx::BitmapFormat::BGRx8888, page_size));
@ -58,7 +60,7 @@ static PDF::PDFErrorOr<NonnullRefPtr<Gfx::Bitmap>> render_page(PDF::Document& do
for (auto const& error : errors.error().errors()) for (auto const& error : errors.error().errors())
warnln("warning: {}", error.message()); warnln("warning: {}", error.message());
} }
return bitmap; return TRY(PDF::Renderer::apply_page_rotation(bitmap, page));
} }
static PDF::PDFErrorOr<NonnullRefPtr<Gfx::Bitmap>> render_page_to_memory(PDF::Document& document, PDF::Page const& page, int repeats) static PDF::PDFErrorOr<NonnullRefPtr<Gfx::Bitmap>> render_page_to_memory(PDF::Document& document, PDF::Page const& page, int repeats)