Commit cfd5147d922ee4e29e10f116dfca79325398a6db

Authored by Jay Berkenbilt
1 parent 8082af09

Add QPDF::getVersionAsPDFVersion

Showing 79 changed files with 138 additions and 21 deletions
ChangeLog
... ... @@ -3,6 +3,9 @@
3 3 * Add new class PDFVersion for more convenient comparison of PDF
4 4 version numbers from the %!PDF header.
5 5  
  6 + * Add QPDF::getVersionAsPDFVersion() to return the PDF version and
  7 + extension together as a PDFVersion object instead of a string.
  8 +
6 9 2022-02-06 Jay Berkenbilt <ejb@ql.org>
7 10  
8 11 * Pl_Buffer and QPDFWriter: add getBufferSharedPointer(), which
... ...
include/qpdf/PDFVersion.hh
... ... @@ -65,9 +65,9 @@ class PDFVersion
65 65 int getExtensionLevel() const;
66 66  
67 67 private:
68   - int major;
69   - int minor;
70   - int extension;
  68 + int major_version;
  69 + int minor_version;
  70 + int extension_level;
71 71 };
72 72  
73 73 #endif // PDFVERSION_HH
... ...
include/qpdf/QPDF.hh
... ... @@ -44,6 +44,7 @@
44 44 #include <qpdf/QPDFStreamFilter.hh>
45 45 #include <qpdf/Buffer.hh>
46 46 #include <qpdf/InputSource.hh>
  47 +#include <qpdf/PDFVersion.hh>
47 48  
48 49 class QPDF_Stream;
49 50 class BitStream;
... ... @@ -260,6 +261,10 @@ class QPDF
260 261  
261 262 QPDF_DLL
262 263 std::string getFilename() const;
  264 + // Return PDF Version and extension level together as a PDFVersion object
  265 + QPDF_DLL
  266 + PDFVersion getVersionAsPDFVersion();
  267 + // Return just the PDF version from the file
263 268 QPDF_DLL
264 269 std::string getPDFVersion() const;
265 270 QPDF_DLL
... ...
libqpdf/PDFVersion.cc
... ... @@ -7,30 +7,30 @@ PDFVersion::PDFVersion() :
7 7 {
8 8 }
9 9  
10   -PDFVersion::PDFVersion(int major, int minor, int extension) :
11   - major(major),
12   - minor(minor),
13   - extension(extension)
  10 +PDFVersion::PDFVersion(int major_version, int minor_version, int extension_level) :
  11 + major_version(major_version),
  12 + minor_version(minor_version),
  13 + extension_level(extension_level)
14 14 {
15 15 }
16 16  
17 17 bool
18 18 PDFVersion::operator<(PDFVersion const& rhs) const
19 19 {
20   - return ((this->major < rhs.major) ? true :
21   - (this->major > rhs.major) ? false :
22   - (this->minor < rhs.minor) ? true :
23   - (this->minor > rhs.minor) ? false :
24   - (this->extension < rhs.minor) ? true :
  20 + return ((this->major_version < rhs.major_version) ? true :
  21 + (this->major_version > rhs.major_version) ? false :
  22 + (this->minor_version < rhs.minor_version) ? true :
  23 + (this->minor_version > rhs.minor_version) ? false :
  24 + (this->extension_level < rhs.extension_level) ? true :
25 25 false);
26 26 }
27 27  
28 28 bool
29 29 PDFVersion::operator==(PDFVersion const& rhs) const
30 30 {
31   - return ((this->major == rhs.major) &&
32   - (this->minor == rhs.minor) &&
33   - (this->extension == rhs.extension));
  31 + return ((this->major_version == rhs.major_version) &&
  32 + (this->minor_version == rhs.minor_version) &&
  33 + (this->extension_level == rhs.extension_level));
34 34 }
35 35  
36 36 void
... ... @@ -45,25 +45,25 @@ PDFVersion::updateIfGreater(PDFVersion const&amp; other)
45 45 void
46 46 PDFVersion::getVersion(std::string& version, int& extension_level) const
47 47 {
48   - extension_level = this->extension;
49   - version = QUtil::int_to_string(this->major) + "." +
50   - QUtil::int_to_string(this->minor);
  48 + extension_level = this->extension_level;
  49 + version = QUtil::int_to_string(this->major_version) + "." +
  50 + QUtil::int_to_string(this->minor_version);
51 51 }
52 52  
53 53 int
54 54 PDFVersion::getMajor() const
55 55 {
56   - return this->major;
  56 + return this->major_version;
57 57 }
58 58  
59 59 int
60 60 PDFVersion::getMinor() const
61 61 {
62   - return this->minor;
  62 + return this->minor_version;
63 63 }
64 64  
65 65 int
66 66 PDFVersion::getExtensionLevel() const
67 67 {
68   - return this->extension;
  68 + return this->extension_level;
69 69 }
... ...
libqpdf/QPDF.cc
... ... @@ -11,6 +11,7 @@
11 11 #include <stdlib.h>
12 12 #include <string.h>
13 13 #include <memory.h>
  14 +#include <regex>
14 15  
15 16 #include <qpdf/QTC.hh>
16 17 #include <qpdf/QUtil.hh>
... ... @@ -2742,6 +2743,24 @@ QPDF::getFilename() const
2742 2743 return this->m->file->getName();
2743 2744 }
2744 2745  
  2746 +PDFVersion
  2747 +QPDF::getVersionAsPDFVersion()
  2748 +{
  2749 + int major = 1;
  2750 + int minor = 3;
  2751 + int extension_level = getExtensionLevel();
  2752 +
  2753 + std::regex v("^[[:space:]]*([0-9]+)\\.([0-9]+)");
  2754 + std::smatch m;
  2755 + if (std::regex_search(this->m->pdf_version, m, v))
  2756 + {
  2757 + major = QUtil::string_to_int(m[1].str().c_str());
  2758 + minor = QUtil::string_to_int(m[2].str().c_str());
  2759 + }
  2760 +
  2761 + return PDFVersion(major, minor, extension_level);
  2762 +}
  2763 +
2745 2764 std::string
2746 2765 QPDF::getPDFVersion() const
2747 2766 {
... ...
libtests/pdf_version.cc
... ... @@ -34,6 +34,18 @@ int main()
34 34 v2.getVersion(version, extension_level);
35 35 assert(version == "1.7");
36 36 assert(extension_level == 8);
  37 + assert(PDFVersion(1, 2) < PDFVersion(1, 3));
  38 + assert(PDFVersion(1, 2) < PDFVersion(1, 2, 1));
  39 + assert(PDFVersion(1, 2, 1) < PDFVersion(1, 2, 2));
  40 + assert(! (PDFVersion(1, 2, 2) < PDFVersion(1, 2, 2)));
  41 + assert(! (PDFVersion(1, 2, 3) < PDFVersion(1, 2, 2)));
  42 + assert(PDFVersion(1, 1) < PDFVersion(1, 2, 2));
  43 + assert(! (PDFVersion(1, 3) < PDFVersion(1, 2, 2)));
  44 + assert(! (PDFVersion(2, 0) < PDFVersion(1, 9, 9)));
  45 + assert(! (PDFVersion(2, 0) < PDFVersion(2, 0)));
  46 + assert(PDFVersion(2, 0) == PDFVersion(2, 0));
  47 + assert(PDFVersion(2, 0, 1) == PDFVersion(2, 0, 1));
  48 +
37 49 std::cout << "PDFVersion assertions passed" << std::endl;
38 50 return 0;
39 51 }
... ...
qpdf/qtest/qpdf/extensions-adbe-force-1.3.out
1 1 version: 1.3
2 2 extension level: 0
3 3 null
  4 +As PDFVersion: 1.3/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-force-1.6.out
1 1 version: 1.6
2 2 extension level: 0
3 3 null
  4 +As PDFVersion: 1.6/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-force-1.7.1.out
1 1 version: 1.7
2 2 extension level: 1
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 1 >> >>
  4 +As PDFVersion: 1.7/1
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-force-1.7.2.out
1 1 version: 1.7
2 2 extension level: 2
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 2 /URL (http://something.adobe.com) >> >>
  4 +As PDFVersion: 1.7/2
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-force-1.7.3.out
1 1 version: 1.7
2 2 extension level: 3
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 3 >> >>
  4 +As PDFVersion: 1.7/3
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-force-1.8.0.out
1 1 version: 1.8
2 2 extension level: 0
3 3 null
  4 +As PDFVersion: 1.8/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-force-1.8.2.out
1 1 version: 1.8
2 2 extension level: 2
3 3 << /ADBE << /BaseVersion /1.8 /ExtensionLevel 2 >> >>
  4 +As PDFVersion: 1.8/2
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-force-1.8.5.out
1 1 version: 1.8
2 2 extension level: 5
3 3 << /ADBE << /BaseVersion /1.8 /ExtensionLevel 5 >> >>
  4 +As PDFVersion: 1.8/5
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-force-1.8.out
1 1 version: 1.8
2 2 extension level: 0
3 3 null
  4 +As PDFVersion: 1.8/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-min-1.3.out
1 1 version: 1.7
2 2 extension level: 2
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 2 /URL (http://something.adobe.com) >> >>
  4 +As PDFVersion: 1.7/2
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-min-1.6.out
1 1 version: 1.7
2 2 extension level: 2
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 2 /URL (http://something.adobe.com) >> >>
  4 +As PDFVersion: 1.7/2
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-min-1.7.1.out
1 1 version: 1.7
2 2 extension level: 2
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 2 /URL (http://something.adobe.com) >> >>
  4 +As PDFVersion: 1.7/2
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-min-1.7.2.out
1 1 version: 1.7
2 2 extension level: 2
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 2 /URL (http://something.adobe.com) >> >>
  4 +As PDFVersion: 1.7/2
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-min-1.7.3.out
1 1 version: 1.7
2 2 extension level: 3
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 3 >> >>
  4 +As PDFVersion: 1.7/3
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-min-1.8.0.out
1 1 version: 1.8
2 2 extension level: 0
3 3 null
  4 +As PDFVersion: 1.8/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-min-1.8.2.out
1 1 version: 1.8
2 2 extension level: 2
3 3 << /ADBE << /BaseVersion /1.8 /ExtensionLevel 2 >> >>
  4 +As PDFVersion: 1.8/2
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-min-1.8.5.out
1 1 version: 1.8
2 2 extension level: 5
3 3 << /ADBE << /BaseVersion /1.8 /ExtensionLevel 5 >> >>
  4 +As PDFVersion: 1.8/5
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-min-1.8.out
1 1 version: 1.8
2 2 extension level: 0
3 3 null
  4 +As PDFVersion: 1.8/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-other-force-1.3.out
1 1 version: 1.3
2 2 extension level: 0
3 3 << /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.3/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-other-force-1.6.out
1 1 version: 1.6
2 2 extension level: 0
3 3 << /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.6/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-other-force-1.7.1.out
1 1 version: 1.7
2 2 extension level: 1
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 1 >> /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.7/1
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-other-force-1.7.2.out
1 1 version: 1.7
2 2 extension level: 2
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 2 >> /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.7/2
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-other-force-1.7.3.out
1 1 version: 1.7
2 2 extension level: 3
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 3 >> /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.7/3
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-other-force-1.8.0.out
1 1 version: 1.8
2 2 extension level: 0
3 3 << /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.8/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-other-force-1.8.2.out
1 1 version: 1.8
2 2 extension level: 2
3 3 << /ADBE << /BaseVersion /1.8 /ExtensionLevel 2 >> /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.8/2
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-other-force-1.8.5.out
1 1 version: 1.8
2 2 extension level: 5
3 3 << /ADBE << /BaseVersion /1.8 /ExtensionLevel 5 >> /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.8/5
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-other-force-1.8.out
1 1 version: 1.8
2 2 extension level: 0
3 3 << /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.8/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-other-min-1.3.out
1 1 version: 1.7
2 2 extension level: 2
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 2 >> /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.7/2
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-other-min-1.6.out
1 1 version: 1.7
2 2 extension level: 2
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 2 >> /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.7/2
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-other-min-1.7.1.out
1 1 version: 1.7
2 2 extension level: 2
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 2 >> /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.7/2
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-other-min-1.7.2.out
1 1 version: 1.7
2 2 extension level: 2
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 2 >> /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.7/2
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-other-min-1.7.3.out
1 1 version: 1.7
2 2 extension level: 3
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 3 >> /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.7/3
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-other-min-1.8.0.out
1 1 version: 1.8
2 2 extension level: 0
3 3 << /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.8/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-other-min-1.8.2.out
1 1 version: 1.8
2 2 extension level: 2
3 3 << /ADBE << /BaseVersion /1.8 /ExtensionLevel 2 >> /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.8/2
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-other-min-1.8.5.out
1 1 version: 1.8
2 2 extension level: 5
3 3 << /ADBE << /BaseVersion /1.8 /ExtensionLevel 5 >> /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.8/5
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-adbe-other-min-1.8.out
1 1 version: 1.8
2 2 extension level: 0
3 3 << /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.8/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-none-force-1.3.out
1 1 version: 1.3
2 2 extension level: 0
3 3 null
  4 +As PDFVersion: 1.3/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-none-force-1.6.out
1 1 version: 1.6
2 2 extension level: 0
3 3 null
  4 +As PDFVersion: 1.6/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-none-force-1.7.1.out
1 1 version: 1.7
2 2 extension level: 1
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 1 >> >>
  4 +As PDFVersion: 1.7/1
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-none-force-1.7.2.out
1 1 version: 1.7
2 2 extension level: 2
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 2 >> >>
  4 +As PDFVersion: 1.7/2
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-none-force-1.7.3.out
1 1 version: 1.7
2 2 extension level: 3
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 3 >> >>
  4 +As PDFVersion: 1.7/3
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-none-force-1.8.0.out
1 1 version: 1.8
2 2 extension level: 0
3 3 null
  4 +As PDFVersion: 1.8/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-none-force-1.8.2.out
1 1 version: 1.8
2 2 extension level: 2
3 3 << /ADBE << /BaseVersion /1.8 /ExtensionLevel 2 >> >>
  4 +As PDFVersion: 1.8/2
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-none-force-1.8.5.out
1 1 version: 1.8
2 2 extension level: 5
3 3 << /ADBE << /BaseVersion /1.8 /ExtensionLevel 5 >> >>
  4 +As PDFVersion: 1.8/5
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-none-force-1.8.out
1 1 version: 1.8
2 2 extension level: 0
3 3 null
  4 +As PDFVersion: 1.8/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-none-min-1.3.out
1 1 version: 1.3
2 2 extension level: 0
3 3 null
  4 +As PDFVersion: 1.3/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-none-min-1.6.out
1 1 version: 1.6
2 2 extension level: 0
3 3 null
  4 +As PDFVersion: 1.6/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-none-min-1.7.1.out
1 1 version: 1.7
2 2 extension level: 1
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 1 >> >>
  4 +As PDFVersion: 1.7/1
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-none-min-1.7.2.out
1 1 version: 1.7
2 2 extension level: 2
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 2 >> >>
  4 +As PDFVersion: 1.7/2
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-none-min-1.7.3.out
1 1 version: 1.7
2 2 extension level: 3
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 3 >> >>
  4 +As PDFVersion: 1.7/3
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-none-min-1.8.0.out
1 1 version: 1.8
2 2 extension level: 0
3 3 null
  4 +As PDFVersion: 1.8/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-none-min-1.8.2.out
1 1 version: 1.8
2 2 extension level: 2
3 3 << /ADBE << /BaseVersion /1.8 /ExtensionLevel 2 >> >>
  4 +As PDFVersion: 1.8/2
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-none-min-1.8.5.out
1 1 version: 1.8
2 2 extension level: 5
3 3 << /ADBE << /BaseVersion /1.8 /ExtensionLevel 5 >> >>
  4 +As PDFVersion: 1.8/5
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-none-min-1.8.out
1 1 version: 1.8
2 2 extension level: 0
3 3 null
  4 +As PDFVersion: 1.8/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-other-force-1.3.out
1 1 version: 1.3
2 2 extension level: 0
3 3 << /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.3/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-other-force-1.6.out
1 1 version: 1.6
2 2 extension level: 0
3 3 << /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.6/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-other-force-1.7.1.out
1 1 version: 1.7
2 2 extension level: 1
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 1 >> /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.7/1
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-other-force-1.7.2.out
1 1 version: 1.7
2 2 extension level: 2
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 2 >> /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.7/2
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-other-force-1.7.3.out
1 1 version: 1.7
2 2 extension level: 3
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 3 >> /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.7/3
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-other-force-1.8.0.out
1 1 version: 1.8
2 2 extension level: 0
3 3 << /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.8/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-other-force-1.8.2.out
1 1 version: 1.8
2 2 extension level: 2
3 3 << /ADBE << /BaseVersion /1.8 /ExtensionLevel 2 >> /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.8/2
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-other-force-1.8.5.out
1 1 version: 1.8
2 2 extension level: 5
3 3 << /ADBE << /BaseVersion /1.8 /ExtensionLevel 5 >> /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.8/5
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-other-force-1.8.out
1 1 version: 1.8
2 2 extension level: 0
3 3 << /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.8/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-other-min-1.3.out
1 1 version: 1.5
2 2 extension level: 0
3 3 << /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.5/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-other-min-1.6.out
1 1 version: 1.6
2 2 extension level: 0
3 3 << /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.6/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-other-min-1.7.1.out
1 1 version: 1.7
2 2 extension level: 1
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 1 >> /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.7/1
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-other-min-1.7.2.out
1 1 version: 1.7
2 2 extension level: 2
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 2 >> /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.7/2
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-other-min-1.7.3.out
1 1 version: 1.7
2 2 extension level: 3
3 3 << /ADBE << /BaseVersion /1.7 /ExtensionLevel 3 >> /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.7/3
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-other-min-1.8.0.out
1 1 version: 1.8
2 2 extension level: 0
3 3 << /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.8/0
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-other-min-1.8.2.out
1 1 version: 1.8
2 2 extension level: 2
3 3 << /ADBE << /BaseVersion /1.8 /ExtensionLevel 2 >> /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.8/2
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-other-min-1.8.5.out
1 1 version: 1.8
2 2 extension level: 5
3 3 << /ADBE << /BaseVersion /1.8 /ExtensionLevel 5 >> /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.8/5
4 5 test 34 done
... ...
qpdf/qtest/qpdf/extensions-other-min-1.8.out
1 1 version: 1.8
2 2 extension level: 0
3 3 << /Potato << /BaseVersion /3.14159 /ExtensionLevel 16059 >> >>
  4 +As PDFVersion: 1.8/0
4 5 test 34 done
... ...
qpdf/test_driver.cc
... ... @@ -1327,6 +1327,12 @@ static void test_34(QPDF&amp; pdf, char const* arg2)
1327 1327 std::cout << "version: " << pdf.getPDFVersion() << std::endl
1328 1328 << "extension level: " << pdf.getExtensionLevel() << std::endl
1329 1329 << pdf.getRoot().getKey("/Extensions").unparse() << std::endl;
  1330 + auto v = pdf.getVersionAsPDFVersion();
  1331 + std::string v_string;
  1332 + int extension_level;
  1333 + v.getVersion(v_string, extension_level);
  1334 + std::cout << "As PDFVersion: " << v_string << "/" << extension_level
  1335 + << std::endl;
1330 1336 }
1331 1337  
1332 1338 static void test_35(QPDF& pdf, char const* arg2)
... ...