Have you tried to collect the barcode on the fly with each character represented with its own image data? Here is an example:
<IMG alt = "105, {C} Start" title = "105, {C} Start" src = "data: image / PNG; base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAy + cYDAAAABlBMVEUAAAD /// + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / ACxgALsAjajKmzkAAAAASUVORK5CYII =" width = " 30 "height =" 60 "> <IMG alt =" 00, A: {space}, B: {space} "title =" 00, A: {space}, B: {space} "src =" data: image / png; base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAy + cYDAAAABlBMVEUAAAD /// + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / ACZgAK8Ah / KrWu0AAAAASUVORK5CYII = "width =" 30 "height =" 60 "> <img alt =" 98, A: {Escape B}, B: {Escape A} "title =" 98, A: {Escape B}, B: {Escape A} "src =" data: image / png; base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAy + cYDAAAABlBMVEUAAAD /// + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / AAugALkArBSbglwAAAAASUVORK5CYII = "width =" 30 "height =" 60 "> <img alt =" 21, A: {5}, B: {5} "title =" 21, A: {5}, B: {5} "src =" data: image / png; base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAy + cYDAAAABlBMVEUAAAD /// + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / ACNgAKkAhD / i5lYAAAAASUVORK5CYII = "width =" 30 "height =" 60 "> <img alt =" 14 , A: {.}, B: {.} "Title =" 14, A: {.}, B: {.} "Src =" data: image / png; base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAy + cYDAAAABlBMVEUAAAD /// + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / AGYgAO8Ah9WahQgAAAAASUVORK5CYII = "width =" 30 "height =" 60 "> <img alt =" 00, A: {gap}, B: {gap} "title =" 00 , A: {space}, B: {space} "src =" data: image / png; base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAy + cYDAAAABlBMVEUAAAD /// + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / ACZgAK8Ah / KrWu0AAAAASUVORK5CYII = "width =" 30 "height =" 60 "> <img alt =" 14, A: {.}, B: "title = {.} "14, A: {.}, B: {.}" Src = "data: image / png; base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAy + cYDAAAABlBMVEUAAAD /// + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / AGYgAO8Ah9WahQgAAAAASUVORK5CYII = "width =" 30 "height =" 60 "> <img width height =" 30 ";:" base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAy + cYDAAAABlBMVEUAAAD /// + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / AF5gAR8Av0A69KoAAAAASUVORK5CYII = image / PNG data "alt =" 64, A: {NUL}, {B }" title=" 64,A:{NUL},B:{ } "src = =" 60 "> <IMG alt = "95, A: {US}, B: {DEL}" title = "95, A: {US}, B: {DEL}" src = "data: image / png; base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAy + cYDAAAABlBMVEUAAAD /// + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADKEQVQIHQEDAPz / AELgAWcBIz + IUR4AAAAASUVORK5CYII = "width =" 30 "height =" 60 "> <img alt =" 07, A: { '}, B: {'} "title = "07, A: {'}, B: {'}" src = "data: image / png; base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAy + cYDAAAABlBMVEUAAAD /// + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / AGdgATEAyJ / 9LboAAAAASUVORK5CYII = "width =" 30 "height =" 60 "> <img alt =" 74, A: {LF}, B: {j} "title = "74, A: {LF}, B: {j}" src = "data: image / png; base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAy + cYDAAAABlBMVEUAAAD /// + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADKEQVQIHQEDAPz / AHmgAZUBGuCD0Y8AAAAASUVORK5CYII = "width =" 30 "height =" 60 "> <img alt =" 101, A: {FNC 4}, B: {Switch A}, C: {Switch A} "title =" 101, A: {FNC 4}, B: {Switch A}, C: {Switch A} "src =" data: image / png; base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAy + cYDAAAABlBMVEUAAAD /// + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / ABQgAEsANWhuDt4AAAAASUVORK5CYII = "width =" 30 "height =" 60 "> <img alt =" 25, A: {9}, B: {9} "title =" 25 , A: {9}, B: {9} "src =" data: image / png; base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAy + cYDAAAABlBMVEUAAAD /// + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / ABpgAJcAex9glyQAAAAASUVORK5CYII = "width =" 30 "height =" 60 "> <img alt =" 12, A: {,}, B: {,} "title =" 12 , A: {,}, B: {,} "src =" data: image / png; base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAy + cYDAAAABlBMVEUAAAD /// + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / AExgAPsArevKOWsAAAAASUVORK5CYII = "width =" 30 "height =" 60 "> <img alt =" 106 {Stop} "title =" 106 {STOP} "the src =" data: images / PNG; base64, iVBORw0KGgoAAAANSUhEUgAAAA0AAAABAQMAAAA / 57ZEAAAABlBMVEUAAAD /// + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / ADigARMA2dpJzT8AAAAASUVORK5CYII = "width =" 30 "height =" 60 ">
009821140014649507749
This means the same barcode as your example, but does not require intermediate graphics and takes up about a third of the place. The data used to form the image can be obtained from the array and used to fill the target HTML using Javascript or another application on the client or server side.
You can find a complete list of 128 code characters at http://notionovus.com/blog/code-128-barcode/
I'm not sure about the turn. I have not tried it yet.