Make QPDF::findPage public (fixes #516)

This was originally not public because I wanted to get rid fo the
pages cache, but I recently realized there were deep reasons not to do
that, and the author of pikepdf wanted this, so I decided to make it
public.
This commit is contained in:
Jay Berkenbilt 2021-11-02 18:12:39 -04:00
parent 42ca1f007a
commit 33a47d5c3c
4 changed files with 15 additions and 2 deletions

View File

@ -1,5 +1,9 @@
2021-11-02 Jay Berkenbilt <ejb@ql.org>
* Add QPDF::findPage to the public API. This is primarily to help
improve the efficiency of code that wraps the qpdf library, such
as pikepdf. Fixes #516.
* zlib-flate: warn and exit with code 3 when there is corrupted
input data even when decompression is possible. We do this in the
zlib-flate CLI so that it can be more reliably used to test the

View File

@ -605,6 +605,15 @@ class QPDF
QPDF_DLL
std::vector<QPDFObjectHandle> const& getAllPages();
// These methods, given a page object or its object/generation
// number, returns the 0-based index into the array returned by
// getAllPages() for that page. An exception is thrown if the page
// is not found.
QPDF_DLL
int findPage(QPDFObjGen const& og);
QPDF_DLL
int findPage(QPDFObjectHandle& page);
// This method synchronizes QPDF's cache of the page structure
// with the actual /Pages tree. If you restrict changes to the
// /Pages tree, including addition, removal, or replacement of
@ -990,8 +999,6 @@ class QPDF
std::set<QPDFObjGen>& visited,
std::set<QPDFObjGen>& seen);
void insertPage(QPDFObjectHandle newpage, int pos);
int findPage(QPDFObjGen const& og);
int findPage(QPDFObjectHandle& page);
void flattenPagesTree();
void insertPageobjToPage(QPDFObjectHandle const& obj, int pos,
bool check_duplicate);

View File

@ -345,6 +345,7 @@ QPDF::findPage(QPDFObjGen const& og)
this->m->pageobj_to_pages_pos.find(og);
if (it == this->m->pageobj_to_pages_pos.end())
{
QTC::TC("qpdf", "QPDF_pages findPage not found");
setLastObjectDescription("page object", og.getObj(), og.getGen());
throw QPDFExc(qpdf_e_pages, this->m->file->getName(),
this->m->last_object_description, 0,

View File

@ -595,3 +595,4 @@ QPDF resolve duplicated page in insert 0
QPDFWriter preserve object streams 1
QPDFWriter exclude from object stream 0
check unclosed --pages 1
QPDF_pages findPage not found 0