Drucken mit Java



  • Ich versuche (erfolgreich) mit Java zu Grafik drucken...

    PrinterJob job = PrinterJob.getPrinterJob();
    job.setJobName("Textausdruck ");
    job.setCopies(1);
    job.setPrintable(new Printable() 
    	{
            public int print(Graphics g, PageFormat pf, int pageIndex) 
            	{
    
        		Graphics2D g2 = (Graphics2D)g;
        		g2.setColor(Color.black);
    	        if(pageIndex >= 1)
    	        	return NO_SUCH_PAGE;
    
    		g2.translate(pf.getImageableX(), pf.getImageableY());
    		g2d.drawLine(1, 1, 200, 200);
    		g2d.drawLine(1, 1, 1, 200);
    		g2d.drawLine(1, 1, 200, 1);
        		return Printable.PAGE_EXISTS; 
    		}
    	}
    	);
    
        if(job.printDialog() == false)
            return;//kein Druck, da abgebrochen
        job.print();//sonst ausdrucken
    	}
    

    Alles kein Problem, nur bleibt oben an der Seite immer ein sehr großer Rand auf den ich nicht drucken kann. Verschiebe ich die Grafik nach oben, wird sie abgeschnitten. Der Drucker druckt aber definitiv (anders Windows Programm) in diesen Bereich.
    Wo ist das Problem?



  • Moin Moin

    einfach das PageFormat ändern.
    Müsste mit funkionieren:

    Paper pap= new Paper();
    pap.setImageableArea(x,y);
    PageFormat pf= new PageFormat()
    pf.setPaper(pap);

    Achtung nicht getestet, falscher Rechner.

    guten Rutsch

    CodeHure



  • No, sorry tut net...
    Der bereich scheint zwar verschoben (vergrößert) zu sein, aber er schneidet immernoch ab (ganau an der selben stelle wie vorher)
    Hatte das selbe Ergebnis als ich mit translate den Bereich verschoben hatte...

    Meind derzeitiger Stand:

    PrinterJob job = PrinterJob.getPrinterJob();
    job.setJobName("Textausdruck ");
    job.setCopies(1);
    job.setPrintable(new Printable() 
    	{
    	boolean first = true;
            public int print(Graphics g, PageFormat pf, int pageIndex) 
            	{
    		Paper pap_old=pf.getPaper();							            		
        		Paper pap= new Paper(); 
    		if (first)
    			{	
    			pap.setImageableArea(pap_old.getImageableX(), pap_old.getImageableY()*2/3 , pap_old.getWidth(), pap_old.getHeight()); 
    			pf.setPaper(pap); 
    			first=false;
    			}
    
    .
    .
    .
    


  • Habe das Problem nochmal genau analysiet, und festgestellt dass standartmäßig ein Clipping Bereich vorhanden ist.
    Einfach mit

    g.setClip(null);
    

    diesen abstellen und die ganze Sache läuft!

    Hoffe es geht in dem Jahr so gut weiter ! Also allen ein schönes neues Jahr! 🙂


Anmelden zum Antworten