drucken



  • 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...

    1. wie kann ich die schriftgröße unabhängig von der seitenbreite definieren/schriftgröße explizit angeben?
    2. 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 😕


Anmelden zum Antworten