diff options
Diffstat (limited to 'libqpdf/QPDF_Real.cc')
-rw-r--r-- | libqpdf/QPDF_Real.cc | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/libqpdf/QPDF_Real.cc b/libqpdf/QPDF_Real.cc index b28c2f70..b4c8283f 100644 --- a/libqpdf/QPDF_Real.cc +++ b/libqpdf/QPDF_Real.cc @@ -25,7 +25,30 @@ QPDF_Real::unparse() JSON QPDF_Real::getJSON() { - return JSON::makeNumber(this->val); + // While PDF allows .x or -.x, JSON does not. Rather than + // convering from string to double and back, just handle this as a + // special case for JSON. + std::string result; + if (this->val.length() == 0) + { + // Can't really happen... + result = "0"; + } + else if (this->val.at(0) == '.') + { + result = "0" + this->val; + } + else if ((this->val.length() >= 2) && + (this->val.at(0) == '-') && + (this->val.at(1) == '.')) + { + result = "-0." + this->val.substr(2); + } + else + { + result = this->val; + } + return JSON::makeNumber(result); } QPDFObject::object_type_e |