- What if an input page specifies /Rotate?
- Better error messages from instantiation
- Select should work without commands in the pipeline
+- page->index: use or remove
class in_page : public page {
QPDFObjectHandle pdf_page;
+ QPDFObjectHandle xobject;
public:
BBox media_box;
void render(page_out *out, pdf_matrix xform);
in_page::in_page(QPDFObjectHandle inpg, int idx)
{
pdf_page = inpg;
+ xobject = QPDFObjectHandle::newNull();
index = idx;
media_box = BBox(inpg.getKey("/MediaBox"));
width = media_box.width();
void in_page::render(page_out *out, pdf_matrix xform)
{
// Convert page to xobject
- QPDFObjectHandle page_copy = page_to_xobject(&out_pdf, out_pdf.copyForeignObject(pdf_page));
+ if (xobject.isNull())
+ xobject = out_pdf.makeIndirectObject( page_to_xobject(&out_pdf, out_pdf.copyForeignObject(pdf_page)) );
string xobj_res = out->new_resource("XO");
- out->xobjects.replaceKey(xobj_res, out_pdf.makeIndirectObject(page_copy));
+ out->xobjects.replaceKey(xobj_res, xobject);
pdf_matrix m;
m.shift(-media_box.x_min, -media_box.y_min);