Fix drawing of header/footer

This commit is contained in:
Kovid Goyal 2023-05-20 10:49:41 +05:30
parent 59fab1d482
commit 20e4db008e
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -12,13 +12,14 @@ using namespace pdf;
static void static void
impose_page(PdfMemDocument *doc, unsigned int dest_page_num, unsigned int src_page_num) { impose_page(PdfMemDocument *doc, unsigned int dest_page_num, unsigned int src_page_num) {
auto xobj = doc->CreateXObjectForm(Rect(), "HeaderFooter"); auto &src_page = doc->GetPages().GetPageAt(src_page_num);
xobj->FillFromPage(doc->GetPages().GetPageAt(src_page_num)); auto xobj = doc->CreateXObjectForm(src_page.GetMediaBox(), "HeaderFooter");
auto dest = &doc->GetPages().GetPageAt(dest_page_num); xobj->FillFromPage(src_page);
static unsigned counter = 0; auto &dest = doc->GetPages().GetPageAt(dest_page_num);
dest->GetOrCreateResources().AddResource("XObject", "Imp"s + std::to_string(++counter), xobj->GetObject()); PdfPainter painter;
auto data = "q\n1 0 0 1 0 0 cm\n/"s + xobj->GetIdentifier().GetEscapedName() + " Do\nQ\n"s; painter.SetCanvas(dest);
dest->GetOrCreateContents().GetStreamForAppending().SetData(data); painter.DrawXObject(*xobj, 0, 0);
painter.FinishDrawing();
} }
static PyObject* static PyObject*