USB Label Drucker

Visi

Mitglied
Hallo Forum,

ich habe einen Dymo Labeldrucker der per USB an meinem Laptop dran ist, ich möchte mit einem Java Programm Daten aus einer Access Datenbank filtern und dann ausdrucken. Für eine einfache Strukturierung habe ich gesorgt (jedes Attribut in einer Spalte). Auf dem Etikett sollte auch sowas wie eine Tabelle ausgedruckt werden, also nicht nur Buchstaben und Zahlen sondern irgendwie ein Bild :/


Meine Probleme sind bei der Ansprechung des Labeldruckers und das Auslesen der Datei aus Access.. Ich wähle im Access drucken und dann "Als Datei Speichern". Wenn ich diese Datei mit einem Texteditor öffne kommt nur Datensalat.


Kann mir jemand bei einem der Schritte helfen oder nützliche Links schicken? Ich wäre dafür sehr sehr dankbar
 
Dieses Vorhaben ist sehr umfangreich. Ich möchte es dir bei Leibe nicht ausreden, aber du solltest dir Bewusst sein, auf was du dich einlässt.

Bezüglich des Kommunikation mit dem Drucker:

Zunächst mal ist die Frage, ob die "Pixel" oder "Pfade", die der Drucker auf die Labels druckt, eine Auflösung bieten, die groß genug ist, um deine speziellen Labels abzubilden. Wenn er das nicht kann, musst du wohl oder übel mit den Schriftzeichen Vorlieb nehmen.

Die Treiberschnittstelle zum Drucker ist wahrscheinlich proprietär und closed-source; dann hast du verloren.
Wenn sie das nicht ist, kannst du auf der Herstellerseite sicherlich Dokumentation und Headerfiles (.h oder .hpp) herunterladen, um den Instalierten Treiber ansprechen zu können.

Wenn du also mit dem Treiber kommunizieren kannst, stellt sich die Frage, ob der Treiber es dir erlaubt, etwas anderes als Schriftzeichen auf das Label zu drucken. Auch hier: wenn er das nicht tut, musst du mit den Schriftzeichen auskommen.

Wenn also diese Vorraussetungen erfüllt sind, ist dein Vorhaben machbar. Folgende Hürde stellt sich aber noch:

Der Treiber ist sehr Wahrscheinlich in C/C++ geschrieben. In diesem Fall musst du entweder eine C/C++ Anwendung schreiben, welche die Kommunikation mit dem Treiber übernimmt und deine Parameter zum Ducken über die Kommandozeile entgegen nimmt (siehe die Java-Klassen Process und ProcessBuilder).
Die Alternative ist JNI; einem Anfänger würe ich eher zum Kommandozeilen-Interface raten.

Nun zu Access:
Access ist eine Datenbank-Management Software. Normalerweise verbindet sich so eine Software mit einem RDS. Damit die kleinen Datenbanken, die man mit Access pflegt, handbar bleiben, wird diese Datenbank in eine Datei geschrieben; mit einem Texteditor wirst du dieser nicht Herr.
Ich würde also empfehlen deine Access-Datenbank auf einen richtigen Datenbankserver zu migrieren (mit XAMPP kann man den auch easy lokal betreiben). Dann kannst du mit den JDBC für MySQL per SQL-Queries darauf zugreiffen.
Alternativ kannst du die Access-Datenbank auch als SQLite Datenbank exportieren und dann mit dem JDBC für SQLite deine Queries abfeuern.

EDIT: Sorry, du wolltest ja ein paar Links haben 😉

JDBC:
Java Database Connectivity – Wikipedia
Java SE Technologies - Database

JDBC Treiberdownloads:
JDBC-Treiber für MySQL Datenbanken
JDBC-Treiber für SQLite

JNI Basics
 
Zuletzt bearbeitet:
Vielen Dank für deine Antworten Tobse.

Also ich kann ganz normal Text oder sonstiges an den Drucker schicken, der druckt das schon aus, das Logo an sich kann er schon auch ausdrucken wenn ich die jpg öffne und auf "Drucken" gehe. Wenn ich aber selber eine neue BMP male und die Ausdrucke kann ich leider keine Ausrichtung, Skalierung etc. eingeben, da weiß ich nicht weiter. Er druckt dann das gemalte irgendwie in die Mitte und verkleinert es vorher.

Bzgl. Access : Ein netter Forenuser hat mir eine PN geschrieben in der auf Java Library for MS Access hingewiesen wird, das teste ich gerade. Halte euch auf dem Laufenden
 
Visi hat gesagt.:
Also ich kann ganz normal Text oder sonstiges an den Drucker schicken, der druckt das schon aus, das Logo an sich kann er schon auch ausdrucken wenn ich die jpg öffne und auf "Drucken" gehe. Wenn ich aber selber eine neue BMP male und die Ausdrucke kann ich leider keine Ausrichtung, Skalierung etc. eingeben, da weiß ich nicht weiter. Er druckt dann das gemalte irgendwie in die Mitte und verkleinert es vorher.
Mit welcher Software machst du das denn? Wenn das mit dem Windows-Notepad geht kannst du ggf. über das OS drucken lassen und musst dich mit dem Treiber garnicht auseinandersetzen. Drucken mit Java.
 
Mit welcher Software machst du das denn? Wenn das mit dem Windows-Notepad geht kannst du ggf. über das OS drucken lassen und musst dich mit dem Treiber garnicht auseinandersetzen. Drucken mit Java.

Mit genau dem Code aus dem Link.


Code:
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;


public class Test {


	public static void main(String[] args) {
		// TODO Auto-generated method stub


		char[] printdata = "hello world\n".toCharArray();
		DocFlavor flavor = DocFlavor.CHAR_ARRAY.TEXT_PLAIN;
		PrintService pservice = PrintServiceLookup.lookupDefaultPrintService();
		DocPrintJob pjob = pservice.createPrintJob();
		Doc doc= new SimpleDoc(printdata, flavor, null);
		try {
			pjob.print(doc, null);
		} catch (PrintException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

damit drucke ich Text auf den Drucker, Bilder oder so öffne ich einfach und drücke STRG+P.

Ich ahne langsam dass einige meiner Probleme auf das Dateiformat von der MDB Datei zurückzuführen sind, es scheint sich um 1997 [VERSION_3] zu handeln, das scheint jackccess nicht öffnen zu können (irgendein Codec Fehler).

Gibt es irgendeine Möglichkeit eine alte (etwa von 1997) MDB Dateiversion in irgendwas anderes zu Codieren? Am allermeisten würde ich mich über XML freuen und darüber, dass der Konvertierungsschritt entweder in Java oder auf Kommandozeile zu machen ist
 
Wenn du Bilder über andere Software druckst, hast du natürlich keinen Einfluss darauf, was das Programm noch mit ihnen anstellt. Schonmal probiert das bild direkt zu drucken? Man kann mit Java auch BufferedImages etc direkt drucken.

Schonmal versucht die alte .mdb mit einem neueren Access zu öffnen und unter einem neueren Format abzuspeichern?
 
Wenn du Bilder über andere Software druckst, hast du natürlich keinen Einfluss darauf, was das Programm noch mit ihnen anstellt. Schonmal probiert das bild direkt zu drucken? Man kann mit Java auch BufferedImages etc direkt drucken.

Schonmal versucht die alte .mdb mit einem neueren Access zu öffnen und unter einem neueren Format abzuspeichern?

Das mit den BufferedImages probiere ich jetzt mal aus, ich berichte über meine Fortschritte.
Ich kann es leider nicht unter einem neueren Format speichern, es sollte zwar, aber es kommt keine Datei? Trotzdem gute Idee : kann Sachen aus der Datenbank kopieren, in Word einfügen und als TXT speichern, das ist auch richtig brauchbar. Jetzt ist mein Problem eine TXT einzulesen, zu filtern und auszudrucken. Völlig in Ordnung für mich
 
Visi hat gesagt.:
Ich kann es leider nicht unter einem neueren Format speichern, es sollte zwar, aber es kommt keine Datei?
Das hört sich schwer nach einem Bug in Access an... kann man nix machen.

Du könntest natürlich trotzdem den Export nach SQLite versuchen. Das ist zwar ein wenig schwieriger anzusprechen wie die Textdatei aber bietet auch mehr flexibilität & komplexität, wenn du sie brauchst.
 

Neue Themen


Zurück
Oben