diff --git a/src/HTMLRenderer/general.cc b/src/HTMLRenderer/general.cc index dc7ae3a..d78bfaa 100644 --- a/src/HTMLRenderer/general.cc +++ b/src/HTMLRenderer/general.cc @@ -457,7 +457,7 @@ void HTMLRenderer::post_process(void) if(iter != page_filenames.begin()) output << ","; output << "'"; - outputURL(output, *iter); + outputJSON(output, *iter); output << "'"; } } diff --git a/src/util/encoding.cc b/src/util/encoding.cc index a3f876c..5abecb2 100644 --- a/src/util/encoding.cc +++ b/src/util/encoding.cc @@ -127,4 +127,23 @@ void outputURL(ostream & out, const string & s) } } +void outputJSON(ostream & out, const string & s) +{ + for(auto iter = s.begin(); iter != s.end(); ++iter) + { + switch (*iter) + { + case '\\': out << "\\\\"; break; + case '"': out << "\\\""; break; + case '/': out << "\\/"; break; + case '\b': out << "\\b"; break; + case '\f': out << "\\f"; break; + case '\n': out << "\\n"; break; + case '\r': out << "\\r"; break; + case '\t': out << "\\t"; break; + default: out << *iter; break; + } + } +} + } //namespace pdf2htmlEX diff --git a/src/util/encoding.h b/src/util/encoding.h index 96e12ac..900e31a 100644 --- a/src/util/encoding.h +++ b/src/util/encoding.h @@ -25,6 +25,11 @@ void outputUnicodes(std::ostream & out, const Unicode * u, int uLen); * URL encoding */ void outputURL(std::ostream & out, const std::string & s); +/* + * JSON encoding + */ + +void outputJSON(std::ostream & out, const std::string & s); } // namespace pdf2htmlEX