Search code examples
android-webviewfabricjs

FabricJS Android Webview Newlines showing as \n


So I load a basic page with the canvas and everything seems to work except newlines are shown as \n

here is the body as a java method:

input = StringEscapeUtils.unescapeShell(this.getData());

    private String htmlBody(String input){


        return "<html><head>" +
                "<link href=\"fonts.css\" type=\"text/css\" rel=\"stylesheet\" />" +
                "<script src=\"jquery.min.js\" type=\"text/javascript\"></script>" +
                "<script src=\"fontfaceobserver.js\" type=\"text/javascript\"></script>" +
                "<script src=\"fabric.min.js\" type=\"text/javascript\"></script>" +
                "<style type=\"text/css\">" +

                ".canvas-container {" +
                        "margin: 0 auto;" +
                    "}"+
        "</style>" +
                "<script src=\"javascript_fabric.js\" type=\"text/javascript\"></script>" +
                "</head><body>"+
                "<div id=\"sb2div\" class=\"row\" style=\"margin: 0 auto!important; max-height: 100vh\">" +
                "<canvas id=\"fabricjs-branding\" width=\"600\" height=\"600\" style=\"margin: auto!important;\"></canvas>" +
                "</div>" +
                "<script>" +
                "$(document).ready(function(){" +
                    "setUpBranding();" +
                    "var o = " + input + ";" +
                    "console.log(o);" +
                    "fabricjscanvas.loadFromJSON(o);"+
                "});" +
                "</script>" +
                "</body></html>";

    }

setUpBranding() does my initialization of fabricjscanvas which does add some feature prototypes but the issue has nothing to do with them.

itext and textbox are standard using the current release 4

here you can see the \n

on the desktop using the same setup everything is fine...same json but on the desktop works


Solution

  • based on a comment i found the newline characters were not getting unescaped with the rest of the json data... strange but I was able to fix it using the Java String Replace method... after using the StringEscapeUtils.unescapeShell

    input = StringEscapeUtils.unescapeShell(this.getData());
    input = input.replace("\\\\n", "\\n");