-
den folgenden code benutze ich um aus einer datei auf einem usb drucker etwas auszudrucken. funktioniert soweit auch gut, allerdings wird die schriftgröße automatisch an die seitenbreite angepasst was bei mir ein problem darstellt, da das ganze bei einem bon/kassenzetteldrucker verwendet wird der eine 8 cm breite rolle hat. die schrift die auf einem normalen drucker gut lesbar ist wird dort so verkleinert dass man sie kaum noch erkennen kann...
- wie kann ich die schriftgröße unabhängig von der seitenbreite definieren/schriftgröße explizit angeben?
- wie kann ich die schrift so aufblähen dass mein text genau die breite der seite hat?
wäre euch super dankbar wenn ihr mir schnell helfen könntet!
#include <windows.h> HDC GetPrinterDC(void) { DWORD dwNeeded, dwReturned; HDC hdc; PRINTER_INFO_4 * pinfo4; EnumPrinters(PRINTER_ENUM_LOCAL,NULL,4,NULL,0,&dwNeeded,&dwReturned); pinfo4=(PRINTER_INFO_4*)malloc(dwNeeded); EnumPrinters(PRINTER_ENUM_LOCAL,NULL,4,(PBYTE)pinfo4,dwNeeded,&dwNeeded,&dwReturned); hdc=CreateDC(NULL,pinfo4->pPrinterName,NULL,NULL); free(pinfo4); return hdc; } //end GetPrinterDC void PageGDICalls(HDC hdcPrn,int cxPage,int cyPage) { static TCHAR ausgabetext[]=TEXT("GreenCode Testausdruck!"); SaveDC(hdcPrn); TextOut(hdcPrn,0,0,ausgabetext,lstrlen(ausgabetext)); }//end PageGDICalls void main() { HDC GetPrinterDC(void); void PageGDICalls(HDC,int,int); static DOCINFO di={sizeof(DOCINFO),TEXT("GreenCode druckt")}; BOOL bSuccess=TRUE; HDC hdcPrn; int xPage,yPage; if(NULL==(hdcPrn=GetPrinterDC())) bSuccess=FALSE; xPage=GetDeviceCaps(hdcPrn,HORZRES); yPage=GetDeviceCaps(hdcPrn,VERTRES); if(StartDoc(hdcPrn,&di)>0) { if(StartPage(hdcPrn)>0) { PageGDICalls(hdcPrn,xPage,yPage); if(EndPage(hdcPrn)>0) EndDoc(hdcPrn); else bSuccess=FALSE; } } else bSuccess=FALSE; DeleteDC(hdcPrn); }//end main
-
Schriftart/grösse kannst du doch ganz normal via SelectObject
auswählen.
Benötigten Platz gibt's mit GetTextExtentPoint32.Jockelx
-
ich blick das nicht... bin anfänger und mir ist das alles viel zu umfangreich...
kann mir nicht jemand konkreten code hinschreiben?
-
ok, zu früh gejammert, inzwischen hab ich es so hinbekommen die größe des texts zu ändern
hFont=CreateFont(400,0,0,0,0,0,0,0,0,0,0,0,0,NULL); SelectObject(hdcPrn,hFont);
allerdings ist mein neues problem jetzt, dass ich den text gerne um 90 grad rotiert hätte... ich habe gelesen, dass das mit logischen schriften (logfont) geht. geht das auch anders?
(sorry, ich bin ein schwerer fall
)
-
Warum willst du es denn anders machen