Reportlab ist Code128 Barcode als HTML-Image-Tag mit Data-URI-Schema in Python
Brauche ich zum erstellen eines Code128-Barcodes mit Python/Django, die eingebettet werden in HTML-Dokument.
Ich will nicht, um alle temporären (cache -) Dateien auf der Festplatte. Deshalb habe ich Sie einbetten möchten Sie als Data-URI-Schema.
Ist das Ergebnis so etwas wie dieses:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot">
Können Sie mir empfehlen eine einfache Möglichkeit, dies zu tun?
Nun benutze ich ReportLab zur Erstellung eines barcodes und Einbettung in PDF-Dateien, aber ich weiß nicht, wie zu exportieren, die Sie als Data-URI-Schema. Wenn dies der empfohlene Weg, dies zu tun.
InformationsquelleAutor Julian Popov | 2012-11-12
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist meine eigene Lösung:
Und außerdem können Sie die Barcodes um 90° gedreht:
Hier ist ein Beispiel-Ergebnis:
http://pastehtml.com/view/ci7qei4k1.html
Dies sollte den trick tun. Ich benutzte die Code128 python-Modul zum generieren des barcodes.
code
Ausgabe
UPDATE
gab es eine schöne Anregung in die Kommentare zu ändern Sie die Code128-Modul, so dass Sie nicht haben, um das Bild zu speichern auf das Dateisystem. Sie können ändern, Code128, so dass es gibt Ihnen die image-Objekt, anstatt es zu speichern in eine Datei. Würden Sie müssen nur eine Zeile code ändern, um dies zu erreichen. Ändern Sie Zeile 162 aus:
zu:
Code128.getImage
so dass es gibt eine PIL-image anstelle des Schreibens einer Datei, dann können Sie schreiben das Ergebnis in eine string-basierte file-Objekt, das anstelle der eigentlichen Datei.Haben Sie versucht, die Montage des barcode-on-the-fly mit jedes symbol repräsentiert mit seinen eigenen Bild-Daten? Hier ist ein Beispiel:
<img
alt="105,{Start C}" title="105,{Start C}" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAABaqmaaaay+cYDAAAABlBMVEUAAAD///+l2Z/dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAadkleqvqihqedapz/ACxgALsAjajKmzkAAAAASUVORK5CYII=" width="30" height="60"><img
alt=" 00", " A:{space},B:{space}" title=" 00,Ein:{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:{space},B:{space}" title=" 00,Ein:{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
alt=" 64,Ein:{NUL},B:{
}" title=" 64,A:{NUL},B:{
}" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAABaqmaaaay+cYDAAAABlBMVEUAAAD///+l2Z/dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAadkleqvqihqedapz/AF5gAR8Av0A69KoAAAAASUVORK5CYII=" width="30" height="60"><imgalt=" 95,A:{UNS},B:{DEL}" title=" 95,A:{UNS},B:{DEL}" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAABaqmaaaay+cYDAAAABlBMVEUAAAD///+l2Z/dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAadkleqvqihqedapz/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/dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAadkleqvqihqedapz/AHmgAZUBGuCD0Y8AAAAASUVORK5CYII=" width="30" height="60"><img
alt="101,A:{FNC 4},B:{Umschalten},C:{Schalter}" title="101,A:{FNC 4},B:{Umschalten},C:{Schalter}" 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,Ein:{,},B:{,}" title=" 12,Ein:{,},B:{,}" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAABaqmaaaay+cYDAAAABlBMVEUAAAD///+l2Z/dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAadkleqvqihqedapz/AExgAPsArevKOWsAAAAASUVORK5CYII=" width="30" height="60"><img
alt="106,{Stop}"title="106,{Stop}"src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAABaqmaaaa/57ZEAAAABlBMVEUAAAD///+l2Z/dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAadkleqvqihqedapz/ADigARMA2dpJzT8AAAAASUVORK5CYII=" width="30" height="60">
009821140014649507749
Dies entspricht dem gleichen barcode wie dein Beispiel, aber erfordert keine fortgeschrittene Grafiken und nimmt etwa ein Drittel des Raumes. Die verwendeten Daten umfassen das Bild zugegriffen werden kann, aus einem array und verwendet zum Auffüllen des Ziel-HTML mit Javascript oder andere client-oder server-Seite der Anwendung.
Finden Sie eine vollständige Liste der Code-128 Symbole auf http://notionovus.com/blog/code-128-barcode/
Ich bin mir nicht sicher über die rotation. Ich habe nicht versucht, dass noch.
Anderen Googler: die vorgeschlagene Lösung sich nicht auf ReportLab, können wir auch einen barcode in unsere html-Vorlage über das base64-Darstellung, da haben wir schon Bild erstellt mit einer anderen library: