Stampa di immagini
DOMANDA:
Come posso effettuare la stampa su carta di immagini utilizzando Java?
RISPOSTA:
Possiamo cambiare di poco il codice che abbiamo utilizzato in questo altro post ed essere in grado di stampare immagini su fogli di carta A4.
package stampa;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.File;
import javax.imageio.ImageIO;
public class Stampa implements Printable {
public Stampa() {
try {
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setJobName("TestStampa");
pj.printDialog();
pj.setPrintable(this);
pj.print();
} catch (PrinterException e) {
e.printStackTrace();
}
}
public int print(Graphics g, PageFormat pf, int page)
throws PrinterException {
// abbiamo solo una pagina (l'indicizzate da 0)
if (page > 0) {
return NO_SUCH_PAGE;
}
BufferedImage img = loadImage("image.png");
int marginX = (int) pf.getImageableX();
int marginY = (int) pf.getImageableY();
int width = (int) pf.getImageableWidth();
int height = (int) pf.getImageableHeight();
g.drawImage(
img, marginX , marginY , width, height, // destinazione
0, 0, img.getWidth(), img.getHeight(), null //sorgente
);
return PAGE_EXISTS;
}
private BufferedImage loadImage(String path) {
BufferedImage bimg = null;
BufferedImage ret = null;
try {
bimg = ImageIO.read(new File(path));
} catch (Exception e) {
e.printStackTrace();
}
ret = new BufferedImage(bimg.getWidth(), bimg.getHeight(),
BufferedImage.TYPE_INT_ARGB); // immagine con alpha
Graphics2D g = ret.createGraphics();
g.drawImage(bimg, 0, 0, null);
g.dispose();
return ret;
}
}
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.File;
import javax.imageio.ImageIO;
public class Stampa implements Printable {
public Stampa() {
try {
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setJobName("TestStampa");
pj.printDialog();
pj.setPrintable(this);
pj.print();
} catch (PrinterException e) {
e.printStackTrace();
}
}
public int print(Graphics g, PageFormat pf, int page)
throws PrinterException {
// abbiamo solo una pagina (l'indicizzate da 0)
if (page > 0) {
return NO_SUCH_PAGE;
}
BufferedImage img = loadImage("image.png");
int marginX = (int) pf.getImageableX();
int marginY = (int) pf.getImageableY();
int width = (int) pf.getImageableWidth();
int height = (int) pf.getImageableHeight();
g.drawImage(
img, marginX , marginY , width, height, // destinazione
0, 0, img.getWidth(), img.getHeight(), null //sorgente
);
return PAGE_EXISTS;
}
private BufferedImage loadImage(String path) {
BufferedImage bimg = null;
BufferedImage ret = null;
try {
bimg = ImageIO.read(new File(path));
} catch (Exception e) {
e.printStackTrace();
}
ret = new BufferedImage(bimg.getWidth(), bimg.getHeight(),
BufferedImage.TYPE_INT_ARGB); // immagine con alpha
Graphics2D g = ret.createGraphics();
g.drawImage(bimg, 0, 0, null);
g.dispose();
return ret;
}
}
La classe di Test è sempre la stessa:
package stampa;
import java.awt.print.PrinterException;
public class TestStampa{
public static void main(String[] args) throws PrinterException{
new Stampa();
}
}
import java.awt.print.PrinterException;
public class TestStampa{
public static void main(String[] args) throws PrinterException{
new Stampa();
}
}
Commenti
Posta un commento