diff options
Diffstat (limited to 'libqpdf/QPDF_Name.cc')
-rw-r--r-- | libqpdf/QPDF_Name.cc | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/libqpdf/QPDF_Name.cc b/libqpdf/QPDF_Name.cc index 5fde9c65..458b1428 100644 --- a/libqpdf/QPDF_Name.cc +++ b/libqpdf/QPDF_Name.cc @@ -1,5 +1,6 @@ #include <qpdf/QPDF_Name.hh> +#include <qpdf/JSON_writer.hh> #include <qpdf/QUtil.hh> QPDF_Name::QPDF_Name(std::string const& name) : @@ -68,3 +69,21 @@ QPDF_Name::getJSON(int json_version) } } } + +void +QPDF_Name::writeJSON(int json_version, JSON::Writer& p) +{ + if (json_version == 1) { + p << "\"" << JSON::Writer::encode_string(normalizeName(name)) << "\""; + } else { + bool has_8bit_chars; + bool is_valid_utf8; + bool is_utf16; + QUtil::analyze_encoding(this->name, has_8bit_chars, is_valid_utf8, is_utf16); + if (!has_8bit_chars || is_valid_utf8) { + p << "\"" << JSON::Writer::encode_string(name) << "\""; + } else { + p << "\"n:" << JSON::Writer::encode_string(normalizeName(name)) << "\""; + } + } +} |