CString wird falsch gedruckt

joerg1337

Grünschnabel
Hallo,

ich will einen Text aus einer Edit Control drucken. Der Text ist in einer CString Variable gespeichert.
Ich habe den Text an verschiedenen Druckern ausprobiert. An dem einen Drucker funktioniert es richtig, bei dem einen nicht.
Es wird zwar das richtige Format angezeigt (Zeilenabstände, Leerzeichen etc.) aber die Buchstaben werden als Sonderzeichen geschrieben. Hat einer eine Idee warum das so ist? Liegt das am Drucker?

Hier mein Code:
Code:
CPrintDialog dlgPrint(FALSE,PD_ALLPAGES,this);
	UpdateData(TRUE);
	if (dlgPrint.DoModal()==IDOK)
	{
		CDC dcPrint;
		dcPrint.Attach(dlgPrint.GetPrinterDC());
		DOCINFO myPrintJob;
		myPrintJob.cbSize = sizeof(myPrintJob);
		myPrintJob.lpszDocName = "PrintingTest";
		myPrintJob.lpszOutput = NULL;
		myPrintJob.lpszDatatype = NULL;
		myPrintJob.fwType = NULL;
		if (dcPrint.StartDoc(&myPrintJob)>=0)
		{
			dcPrint.StartPage();
			RECT rctA;
			rctA.left = 20;  
			rctA.top = 30;  
			rctA.right  = 4000; 
			rctA.bottom = 4000;
			dcPrint.DrawText(m_editcodefield, &rctA, DT_LEFT);
			dcPrint.EndPage();
			dcPrint.EndDoc();
		}
		dcPrint.DeleteDC();
	}

Danke schonmal im Vorraus
 
Moin,

wenn wirklich sämtliche Buchstaben (und auch Zahlen) falsch kommen, wirst Du ein Problem mit dem jeweiligen Zeichensatz haben. Hier muss u. U. jeder einzelen Drucker entsprechend angesteuert werden!
Bspw. unterscheiden sich sich Laserdrucker von älteren Nadeldruckern meist ganz erheblich!
Im Internet sollte sich sich die jeweilige Druckersprache leicht finden lassen!

Gruß
Klaus
 
Wie vfl_freak schon sagte, wird der Fehler wahrscheinlich an dem Datenformat liegen, das der Drucker zu fressen bekommt. Ältere Drucker unterschieden sich kaum von Schreibmaschinen. Sobald per LPT ein Zeichen kam, wurde es gedruckt. Aber in Zeiten von Laserdruckern und properitärer Treiber ist es leider nicht mehr so einfach.

Programmierer umgehen das Problem auf zwei Arten.

1) Statt das Dokument direkt zu drucken, wird ein Word geöffnet und über die API so gesteuert, dass sich nach und nach das fertige und druckreife Dokument zusammensetzt. (ältere Methode, sieht man unter anderem bei der Polizei)

2) Man erstellt eine PDF Datei, die der Benutzer dann drucken kann. So umgehe ich heute die ganzen Treiber / Format Probleme.
 
Zurück