diff options
Diffstat (limited to 'qpdf/test_driver.cc')
-rw-r--r-- | qpdf/test_driver.cc | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/qpdf/test_driver.cc b/qpdf/test_driver.cc index 48c0eb41..16859ad2 100644 --- a/qpdf/test_driver.cc +++ b/qpdf/test_driver.cc @@ -6,6 +6,7 @@ #include <qpdf/QUtil.hh> #include <qpdf/QTC.hh> #include <qpdf/Pl_StdioFile.hh> +#include <qpdf/Pl_Buffer.hh> #include <qpdf/QPDFWriter.hh> #include <iostream> #include <string.h> @@ -282,6 +283,31 @@ void runtest(int n, char const* filename) } } } + else if (n == 6) + { + QPDFObjectHandle root = pdf.getRoot(); + QPDFObjectHandle metadata = root.getKey("/Metadata"); + if (! metadata.isStream()) + { + throw std::logic_error("test 6 run on file with no metadata"); + } + Pl_Buffer bufpl("buffer"); + metadata.pipeStreamData(&bufpl, false, false, false); + Buffer* buf = bufpl.getBuffer(); + unsigned char const* data = buf->getBuffer(); + bool cleartext = false; + if ((buf->getSize() > 9) && + (strncmp((char const*)data, "<?xpacket", 9) == 0)) + { + cleartext = true; + } + delete buf; + std::cout << "encrypted=" + << (pdf.isEncrypted() ? 1 : 0) + << "; cleartext=" + << (cleartext ? 1 : 0) + << std::endl; + } else { throw std::runtime_error(std::string("invalid test ") + |