Toon posts:

[JAVA] jpg/gif/png printen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb t hele forum hier afgezocht, google geprobeerd en het hele forum van sun doorgespit, maar geen manier gevonden om met de print api van JAVA een image te printen.

Ik heb wel een hoop voorbeelden gevonden, maar nix werkt.

In de voorbeelden komt t uiteindelijk gewoon neer op 'drawImage(Image...' maar ik krijg op de plek waar ik mijn image wil printen alleen maar een leeg veld.

drawString en drawRect enz. werken wel, maar ik krijg t met drawImage niet voor elkaar.

iemand tips??...

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 18-05 09:50

pjvandesande

GC.Collect(head);

Wat is de code die het hem zou moeten doen?

Verwijderd

Topicstarter
Ik heb ff een flink stuk gestript...ik hoop dat ik niet teveel gestript hebt zodat t niet meer zou kunnen werken...

maar zoals je ziet, regel 45. dat doet nix of, er moet een speciale manier zijn om afbeeldingen te printen, maar ik kan nergens vinden hoe.....


Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public class Printing implements Printable{
    protected int m_maxNumPage = 1;
    private Image img;

    public Printing(String s){
        Toolkit toolkit = Toolkit.getDefaultToolkit();
        img = toolkit.getImage(s); 
    }

    public void print(){
        try{
            PrinterJob prnJob = PrinterJob.getPrinterJob();
            prnJob.setPrintable(this);
            if(!prnJob.printDialog())
                return;
            m_maxNumPage = 1;
            prnJob.print();
        }catch (PrinterException e){
            e.printStackTrace();
            System.err.println("Printing error: "+e.toString());
        }
    }

    public int print(Graphics pg, PageFormat pageFormat,int pageIndex) throws PrinterException {
        if (pageIndex >= m_maxNumPage)
            return NO_SUCH_PAGE;

        pg.translate((int)pageFormat.getImageableX(),(int)PageFormat.getImageableY());
        int wPage = 0;
        int hPage = 0;
        if (pageFormat.getOrientation() == pageFormat.LANDSCAPE) {
            wPage = (int)pageFormat.getImageableWidth();
            hPage = (int)pageFormat.getImageableHeight();
        }else{
            wPage = (int)pageFormat.getImageableWidth();
            wPage += wPage/2;
            hPage = (int)pageFormat.getImageableHeight();
            hPage += hPage;
            pg.setClip(0,0,wPage,hPage);
        }

        pg.setFont(new java.awt.Font("Dialog", 1, 15));
        pg.setColor(Color.black);
        pg.drawString("Test",50,128);
        pg.drawImage(img,100,100,100,100,null);
        return PAGE_EXISTS;
    }
}

  • bodiam
  • Registratie: December 2001
  • Laatst online: 31-12-2024
Misschien kun je hier eens naar kijken (Listing 3)

Printing images in Java

Verwijderd

Topicstarter
Dankjewel, het heeft iets met buffering te maken geloof ik...ben er iig uitgekomen door een iconimage te maken en hiervan de image op te vragen en deze af te printen...

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 01-05 13:23
Printen in Java is eigenlijk niks anders dan een 'screenshot' afdrukken. Waar je dus voor moet zorgen is dat alles dat je wilt afdrukken ook in die 'screenshot' zit. Buffering zorgt er dus voor dat alles in het uiteindelijke plaatje komt.

Maar printen in Java is zoals je al hebt gemerkt verre van makkelijk. En de vele veranderingen in de SDK en JRE helpen door ook niet bij...

Verwijderd

Printen in java is inderdaad niet makkelijk. Verder kun je verschillende uitvoer krijgen op verschillende printers. Ik moest ook een keer een image printen, op mijn eigen niet-HP postscript printer werd ie prima afgedrukt maar op HP printers kreeg ik een hele lage resolutie, waarschijnlijk 72dpi. Ik heb er nooit een goede oplossing voor gevonden, dus ben ik maar direct gaan tekenen op de graphics die ik van de printer terug kreeg ipv een image maken van mijn tekening en die te printen. Ik weet niet hoe het in de jdks na 1.3 is geworden, maar in 1.3 werkte het dus niet goed.
Pagina: 1