diff --git a/ChangeLog b/ChangeLog index 0efdebe..e07bca2 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 c488e0b..736e167 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 a774bd4..57f57d2 100644 --- a/libqpdf/QPDF.cc +++ b/libqpdf/QPDF.cc @@ -240,6 +240,12 @@ QPDF::processInputSource(PointerHolder source, } void +QPDF::closeInputSource() +{ + this->m->file = 0; +} + +void QPDF::setPasswordIsHexKey(bool val) { this->m->provided_password_is_hex_key = val; @@ -291,6 +297,12 @@ QPDF::getWarnings() } bool +QPDF::anyWarnings() const +{ + return ! this->m->warnings.empty(); +} + +bool QPDF::findHeader() { qpdf_offset_t global_offset = this->m->file->tell(); diff --git a/manual/qpdf-manual.xml b/manual/qpdf-manual.xml index 4f3b54a..bfdefc4 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 @@ -4459,6 +4459,20 @@ print "\n"; + 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 for converting back and forth between strings and unsigned integers: uint_to_string,