diff --git a/ChangeLog b/ChangeLog index 0efdebec..e07bca21 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2019-08-31 Jay Berkenbilt + * Add QPDF::anyWarnings() method to find out whether there have + been any warnings without resetting the list. + + * Add QPDF::closeInputSource() method to release the input source + so the input file can be deleted or renamed. + * Add methods rename_file and remove_file to QUtil. 2019-08-24 Jay Berkenbilt diff --git a/include/qpdf/QPDF.hh b/include/qpdf/QPDF.hh index c488e0b1..736e1676 100644 --- a/include/qpdf/QPDF.hh +++ b/include/qpdf/QPDF.hh @@ -101,6 +101,14 @@ class QPDF void processInputSource(PointerHolder, char const* password = 0); + // Close or otherwise release the input source. Once this has been + // called, no other methods of qpdf can be called safely except + // for getWarnings and anyWarnings(). After this has been called, + // it is safe to perform operations on the input file such as + // deleting or renaming it. + QPDF_DLL + void closeInputSource(); + // For certain forensic or investigatory purposes, it may // sometimes be useful to specify the encryption key directly, // even though regular PDF applications do not provide a way to do @@ -206,6 +214,11 @@ class QPDF QPDF_DLL std::vector getWarnings(); + // Indicate whether any warnings have been issued so far. Does not + // clear the list of warnings. + QPDF_DLL + bool anyWarnings() const; + // Return an application-scoped unique ID for this QPDF object. // This is not a globally unique ID. It is constructing using a // timestamp and a random number and is intended to be unique diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc index a774bd42..57f57d27 100644 --- a/libqpdf/QPDF.cc +++ b/libqpdf/QPDF.cc @@ -239,6 +239,12 @@ QPDF::processInputSource(PointerHolder source, parse(password); } +void +QPDF::closeInputSource() +{ + this->m->file = 0; +} + void QPDF::setPasswordIsHexKey(bool val) { @@ -290,6 +296,12 @@ QPDF::getWarnings() return result; } +bool +QPDF::anyWarnings() const +{ + return ! this->m->warnings.empty(); +} + bool QPDF::findHeader() { diff --git a/manual/qpdf-manual.xml b/manual/qpdf-manual.xml index 4f3b54ae..bfdefc41 100644 --- a/manual/qpdf-manual.xml +++ b/manual/qpdf-manual.xml @@ -4429,7 +4429,7 @@ print "\n"; - the + The sets the zlib compression level used for any streams compressed by /FlateDecode. Most @@ -4457,6 +4457,20 @@ print "\n"; additional details. + + + Method QPDF::anyWarnings tells whether + there have been any warnings without clearing the list of + warnings. + + + + + Method QPDF::closeInputSource closes or + otherwise releases the input source. This enables the input + file to be deleted or renamed. + + New methods have been added to QUtil