Sending generated svg ins json

Hey there,

I am trying to generate svg qr codes with this packages:
and it generates something, the svg code it seems,
and I want to send this code in json as a response, but the code that I am getting after pasting it into any svg renderer doesn’t seem to work, it doesn’t show anything.

here is the svg code:

Why can this be? Or what am i missing?

if someone in the future would stumble upon this, you can unescape your json on this site for testing:

Are you pasting exactly that code into an SVG renderer or do you print it first to resolve escapes and quotes properly?

1 Like

i was just putting it straight into a renderer

You need to make sure its properly unquoted/unescaped first for most renderers I think…

<?xml version="1.0" standalone="yes"?>
<svg version="1.1" xmlns="" xmlns:xlink="" xmlns:ev="" width="275" height="275"
<rect width="11" height="11" x="0" y="0" style="fill:#fff"/><rect width="11" height="11" x="0" y="11" style="fill:#fff"/>
<!-- and so on -->

How you can create an SVG from your JSON-string programmatically, I’m not sure… That massively depends on your libraries used clientside and how exactly you encode the SVG into JSON…

1 Like

Actually it seems like if i pipe IO.inspect like so:

      |> EQRCode.encode()
      |> EQRCode.svg()
      |> IO.inspect

the printed out stuff looks the same as the one in the pastebin:
a little taste:

"<?xml version=\"1.0\" standalone=\"yes\"?>\n<svg version=\"1.1\" xmlns=\"\" xmlns:xlink=\"\" xmlns:ev=\"\" width=\"275\" height=\"275\"\n      shape-rendering=\"crispEdges\">\n<rect width=\"11\" height=\"11\" x=\"0\" y=\"0\" style=\"fill:#fff\"/>

If you want a pasteable output from within elixir, you need to IO.puts rather than IO.inspect.


ohh, that works, but then the one I send, as my response, why is that not like that?
because it gets encoded?

Well, its JSON encoded, and a JSON encoded string looks pretty much like one that is inspected.

Therefore, how to render this as SVG on the clientside, is pretty much JS stuff and nothing I could help you with.