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