Der Code128-Barcode von Reportlab als HTML-Image-Tag mit Daten-URI-Schema in Python

8

Ich muss einen Code128 Barcodes mit Python / Django erstellen, die im HTML-Dokument eingebettet werden müssen.

Ich möchte keine temporären (oder Cache-) Dateien auf dem Datenträger erstellen. Deshalb möchte ich sie als Data URI Scheme einbetten.

Das Ergebnis muss in etwa so aussehen:

%Vor%

Können Sie mir einen einfachen Weg dazu empfehlen?

Jetzt verwende ich ReportLab, um solche Barcodes zu erstellen und sie in PDF-Dateien einzubetten, aber ich weiß nicht, wie man sie als Daten-URI-Schema exportiert. Wenn dies der empfohlene Weg ist, dies zu tun.

    
Julian Popov 12.11.2012, 14:15
quelle

4 Antworten

11

Das ist meine eigene Lösung:

%Vor%

Und Sie können Barcode auch um 90 ° gedreht bekommen:

%Vor%

Hier ist ein Beispielergebnis:

Ссылка

    
Julian Popov 12.11.2012, 20:10
quelle
5

Dies sollte den Trick machen. Ich habe das Code128 Python-Modul verwendet, um die Barcodes zu generieren.

Code

%Vor%

Ausgabe

%Vor%

AKTUALISIEREN

In den Kommentaren gab es einen netten Vorschlag, das Code128-Modul so zu modifizieren, dass es das Bild nicht im Dateisystem speichern muss. Sie können Code128 so ändern, dass er das Bildobjekt zurückgibt, anstatt es in einer Datei zu speichern. Sie müssten nur eine Codezeile ändern, um dies zu erreichen. Ändern Sie Zeile 162 von:

%Vor%

zu:

%Vor%     
Marwan Alsabbagh 12.11.2012 17:23
quelle
1

Haben Sie versucht, den Barcode im laufenden Betrieb zu erstellen, wobei jedes Symbol mit seinen eigenen Bilddaten dargestellt wird? Hier ist ein Beispiel:

& lt; img alt="105 {Start C}" title="105 {Start C}" src="Daten: image / jpeg; base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAy + cYDAAAABlBMVEUAAAD /// + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / ACxgALsAjajKmzkAAAAASUVORK5CYII=" width="30" Höhe="60" & gt; & lt; img alt="00, A: {Leerzeichen}, B: {Leerzeichen}" title="00, A: {Leerzeichen}, B: {Leerzeichen}" src="Daten: Bild / Png; Base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAAY + CYDAAAABlBMVEUAAAD // / + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / ACZgAK8Ah / KrWu0AAAAASUVORK5CYII="width=" 30 "height=" 60 "& gt; & lt; img alt="98, A: {Escape B}, B: {Escape A}" title="98, A: {Escape B}, B: {Escape A}" src="daten: image / png; base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAy + cYDAAAABlBMVEUAAAD /// + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / AAugALkArBSbglwAAAASUVORK5CYII="width=" 30 "height=" 60 "& gt; & lt; img alt="21, A: {5}, B: {5}" title="21, A: {5}, B: {5}" src="daten: image / png; base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAAy + cYDAAAABlBMVEUAAAD // / + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / ACNgAKkAhD / i5lYAAAAASUVORK5CYII="width=" 30 "height=" 60 "& gt; & lt; img alt="14, A: {.}, B: {.}" title="14, A: {.}, B: {.}" src="daten: image / png; base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAAy + cYDAAAABlBMVEUAAAD // / + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / AGYgAO8Ah9WahQgAAAAASUVORK5CYII="width=" 30 "height=" 60 "& gt; & lt; img alt="00, A: {Leerzeichen}, B: {Leerzeichen}" title="00, A: {Leerzeichen}, B: {Leerzeichen}" src="Daten: Bild / Png; Base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAAY + CYDAAAABlBMVEUAAAD // / + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / ACZgAK8Ah / KrWu0AAAAASUVORK5CYII="width=" 30 "height=" 60 "& gt; & lt; img alt="14, A: {.}, B: {.}" title="14, A: {.}, B: {.}" src="daten: image / png; base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAAy + cYDAAAABlBMVEUAAAD // / + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / AGYgAO8Ah9WahQgAAAAASUVORK5CYII="width=" 30 "height=" 60 "& gt; & lt; img alt="64, A: {NUL}, B: { }" title=" 64,A:{NUL},B:{ }" src="data: image / PNG; Base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAy + cYDAAAABlBMVEUAAAD /// + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / AF5gAR8Av0A69KoAAAAASUVORK5CYII=" width="30" height="60" & gt; & lt; img alt="95, A: {US}, B: {DEL}" title="95, A: {US}, B: {DEL}" src="daten: image / png; base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAy + cYDAAAABlBMVEUAAAD // / + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / AELgAWcBIz + IUR4AAAAASUVORK5CYII="width=" 30 "height=" 60 "& gt; & lt; img alt="07, A: {'}, B: {'}" title="07, A: {'}, B: {'}" src="daten: bild / png; base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAAy + cYDAAAABlBMVEUAAAD // / + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / AGdgATEAyJ / 9LboAAAAASUVORK5CYII="width=" 30 "height=" 60 "& gt; & lt; img alt="74, A: {LF}, B: {j}" title="74, A: {LF}, B: {j}" src="daten: bild / png; base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAAy + cYDAAAABlBMVEUAAAD // / + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / AHmgAZUBGuCD0Y8AAAAASUVORK5CYII="width=" 30 "height=" 60 "& gt; & lt; img alt="101, A: {FNC 4}, B: {Schalter A}, C: {Schalter A}" title="101, A: {FNC 4}, B: {Schalter A}, C: {Schalter A }“src="data: image / PNG; Base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAy + cYDAAAABlBMVEUAAAD /// + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / ABQgAEsANWhuDt4AAAAASUVORK5CYII=" width="30" height="60" & gt; & lt; img alt="25, A: {9}, B: {9}" title="25, A: {9}, B: {9}" src="daten: image / png; base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAAy + cYDAAAABlBMVEUAAAD // / + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / ABpgAJcAex9glyQAAAAASUVORK5CYII="width=" 30 "height=" 60 "& gt; & lt; img alt="12, A: {,}, B: {,}" title="12, A: {,}, B: {,}" src="daten: image / png; base64, iVBORw0KGgoAAAANSUhEUgAAAAsAAAABAQMAAAAAy + cYDAAAABlBMVEUAAAD // / + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / AExgAPsArevKOWsAAAAASUVORK5CYII="width=" 30 "height=" 60 "& gt; & lt; img alt="106 {Stop}" title="106 {Stop}" src="data: image / PNG; Base64, iVBORw0KGgoAAAANSUhEUgAAAA0AAAABAQMAAAA / 57ZEAAAABlBMVEUAAAD /// + l2Z / dAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAADklEQVQIHQEDAPz / ADigARMA2dpJzT8AAAAASUVORK5CYII=" width="30" height="60" & gt;
009821140014649507749

Dies ist der gleiche Barcode wie in Ihrem Beispiel, erfordert jedoch keine Zwischengrafik und benötigt etwa ein Drittel des Platzes. Auf die Daten, aus denen das Bild besteht, kann von einem Array aus zugegriffen werden, um den Ziel-HTML-Code mit Javascript oder einer anderen Client- oder serverseitigen Anwendung zu füllen.

Eine vollständige Liste der Code 128-Symbole finden Sie unter Ссылка

Ich bin mir nicht sicher über die Rotation. Das habe ich noch nicht ausprobiert.

    
Brian Anderson 14.11.2012 15:47
quelle
0

Für andere Googler: Die vorgeschlagene Lösung ist nicht auf ReportLab angewiesen, wir können einen Barcode aus der base64-Darstellung in unsere html-Vorlage einfügen, vorausgesetzt, wir haben bereits ein Bild mit einer anderen Bibliothek erstellt:

%Vor%
Ehvince 14.01.2017 19:11
quelle