aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDF_Name.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libqpdf/QPDF_Name.cc')
-rw-r--r--libqpdf/QPDF_Name.cc19
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)) << "\"";
+ }
+ }
+}