mirror of https://github.com/qpdf/qpdf.git
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:
parent
42ca1f007a
commit
33a47d5c3c
|
@ -1,5 +1,9 @@
|
||||||
2021-11-02 Jay Berkenbilt <ejb@ql.org>
|
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
|
* zlib-flate: warn and exit with code 3 when there is corrupted
|
||||||
input data even when decompression is possible. We do this in the
|
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
|
zlib-flate CLI so that it can be more reliably used to test the
|
||||||
|
|
|
@ -605,6 +605,15 @@ class QPDF
|
||||||
QPDF_DLL
|
QPDF_DLL
|
||||||
std::vector<QPDFObjectHandle> const& getAllPages();
|
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
|
// This method synchronizes QPDF's cache of the page structure
|
||||||
// with the actual /Pages tree. If you restrict changes to the
|
// with the actual /Pages tree. If you restrict changes to the
|
||||||
// /Pages tree, including addition, removal, or replacement of
|
// /Pages tree, including addition, removal, or replacement of
|
||||||
|
@ -990,8 +999,6 @@ class QPDF
|
||||||
std::set<QPDFObjGen>& visited,
|
std::set<QPDFObjGen>& visited,
|
||||||
std::set<QPDFObjGen>& seen);
|
std::set<QPDFObjGen>& seen);
|
||||||
void insertPage(QPDFObjectHandle newpage, int pos);
|
void insertPage(QPDFObjectHandle newpage, int pos);
|
||||||
int findPage(QPDFObjGen const& og);
|
|
||||||
int findPage(QPDFObjectHandle& page);
|
|
||||||
void flattenPagesTree();
|
void flattenPagesTree();
|
||||||
void insertPageobjToPage(QPDFObjectHandle const& obj, int pos,
|
void insertPageobjToPage(QPDFObjectHandle const& obj, int pos,
|
||||||
bool check_duplicate);
|
bool check_duplicate);
|
||||||
|
|
|
@ -345,6 +345,7 @@ QPDF::findPage(QPDFObjGen const& og)
|
||||||
this->m->pageobj_to_pages_pos.find(og);
|
this->m->pageobj_to_pages_pos.find(og);
|
||||||
if (it == this->m->pageobj_to_pages_pos.end())
|
if (it == this->m->pageobj_to_pages_pos.end())
|
||||||
{
|
{
|
||||||
|
QTC::TC("qpdf", "QPDF_pages findPage not found");
|
||||||
setLastObjectDescription("page object", og.getObj(), og.getGen());
|
setLastObjectDescription("page object", og.getObj(), og.getGen());
|
||||||
throw QPDFExc(qpdf_e_pages, this->m->file->getName(),
|
throw QPDFExc(qpdf_e_pages, this->m->file->getName(),
|
||||||
this->m->last_object_description, 0,
|
this->m->last_object_description, 0,
|
||||||
|
|
|
@ -595,3 +595,4 @@ QPDF resolve duplicated page in insert 0
|
||||||
QPDFWriter preserve object streams 1
|
QPDFWriter preserve object streams 1
|
||||||
QPDFWriter exclude from object stream 0
|
QPDFWriter exclude from object stream 0
|
||||||
check unclosed --pages 1
|
check unclosed --pages 1
|
||||||
|
QPDF_pages findPage not found 0
|
||||||
|
|
Loading…
Reference in New Issue