Ik heb een applicatie gemaakt waarmee je wat afbeeldingen kunt inladen en vervolgens daarvan een PDF kunt laten genereren.
Het probleem is nu dat bij het maken van de PDF de kwaliteit van de afbeeldingen heel erg achteruit gaat. Ik denk dat hij dpi verliest bij het aanroepen van drawImage().
Ik heb een panel gemaakt en deze geimplementeerd als een printablePage. Vervolgens heb ik de functie toPDF zo geimplementeerd:
Hoe kan ik zorgen dat de kwaliteit van de afbeeldingen niet achteruit gaat? Heb al wat gegoogled, maar heb zo'n idee dat het met de methodes van Graphics2D niet gaat lukken.
Alvast bedankt
Het probleem is nu dat bij het maken van de PDF de kwaliteit van de afbeeldingen heel erg achteruit gaat. Ik denk dat hij dpi verliest bij het aanroepen van drawImage().
Ik heb een panel gemaakt en deze geimplementeerd als een printablePage. Vervolgens heb ik de functie toPDF zo geimplementeerd:
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
| public void toPDF(Graphics g, int height, int width){ int ruimteH = (height - (3 * hoogteAfbeelding)) / 4; int ruimteV = (width - (2 * breedteAfbeelding)) / 3; int x1 = ruimteV; int x2 = ruimteV * 2 + breedteAfbeelding; int y1 = ruimteH; int y2 = 2 * ruimteH + hoogteAfbeelding; int y3 = 3 * ruimteH + 2 * hoogteAfbeelding; ImageIcon i1 = ((ImageIcon)label1.getIcon()); ImageIcon i2 = ((ImageIcon)label2.getIcon()); ImageIcon i3 = ((ImageIcon)label3.getIcon()); Color oldColor = g.getColor(); g.setColor(Color.LIGHT_GRAY); g.fillRect(x2, y1, breedteAfbeelding, hoogteAfbeelding); g.fillRect(x2, y2, breedteAfbeelding, hoogteAfbeelding); g.fillRect(x2, y3, breedteAfbeelding, hoogteAfbeelding); g.setColor(oldColor); g.drawString("Pagina "+ this.pageIndex, (width/2)-15, height-20); if(i1 != null){ Image image1 = i1.getImage(); int paddingV = (hoogteAfbeelding - (int)image1.getHeight(this))/2; int paddingH = (breedteAfbeelding - (int)image1.getWidth(this))/2; g.drawImage(image1, x1 + paddingH, y1 + paddingV, this); } if(i2 != null){ Image image2 = i2.getImage(); int paddingV = (hoogteAfbeelding - (int)image2.getHeight(this))/2; int paddingH = (breedteAfbeelding - (int)image2.getWidth(this))/2; g.drawImage(image2, x1 + paddingH, y2 + paddingV, this); } if(i3 != null){ Image image3 = i3.getImage(); int paddingV = (hoogteAfbeelding - (int)image3.getHeight(this))/2; int paddingH = (breedteAfbeelding - (int)image3.getWidth(this))/2; g.drawImage(image3, x1 + paddingH, y3 + paddingV, this); } } |
Hoe kan ik zorgen dat de kwaliteit van de afbeeldingen niet achteruit gaat? Heb al wat gegoogled, maar heb zo'n idee dat het met de methodes van Graphics2D niet gaat lukken.
Alvast bedankt
