This property holds the current Page Number. The current page is
the one that receives new objects as they are added to the
For example the methods AddText, AddLine, AddImage, FrameRect and FillRect all operate on the current
When you change this property the Pos
property is reset to the top left of the current Rect.
Note that the PageNumber property is not the same as the
Page property. The Page holds an Object ID
typically returned from a call to AddPage. The PageNumber indicates
the page using an index ranging between one and the PageCount.
Either the Page or the PageNumber property can be used to set
the current page.
If no page is specified the current page is taken to be the
first page in the document.
PDF documents are optimized for fast access to pages. So when
you go to a particular page of a document by specifying a
PageNumber this operation is quick. It is especially quick for
access to the next and previous pages as there are simple ways to
find them given the current page.
However it is less obvious that getting the PageNumber property
can be more expensive than one might think. ABCpdf cannot assume
that the PDF is the same as it was last time you accessed the
PageNumber so it cannot necessarily just give you the number it had
last time. It has to assume the worst case which is that you have
reorganized the pages in some way and at the very least it will
have to validate the current PageNumber by a test retrieval of that
page. At the very worst it will have to scan through the entire
page tree looking to see where the current page has ended up.
In general getting the PageNumber is not too expensive. But if
you write code which results in it being accessed thousands of
times then it can become noticeable. So if you find yourself
repeatedly getting the the PageNumber inside loops then consider
saving the PageNumber in a separate variable and use that instead.
It's an easy optimization to make.