Hi, I'm trying to print some text on a credit card size card with a card printer. So, I'm using the print api and it works, the only thing is I want to position text somewhere specific on the card but that I can't change the coordinates of the imageable area. If it is not the default value of imageableX = 72 units and imageableY = 72 units, nothing is printed on the card. Also, it needs to print on LANDSCAPE mode, but it totally messes it up and the imageableX value changes to a different value even though I set it to something else. So here is my code taht I'm testing out:
import java.awt.*;
import java.awt.print.*;
public class CardPrinter implements Printable {
static public void main(String args[]) {
PrinterJob printerJob = PrinterJob.getPrinterJob();
Book book = new Book();
book.append(new CardPrinter(), new PageFormat());
printerJob.setPageable(book);
boolean doPrint = printerJob.printDialog();
if (doPrint) {
try {
printerJob.print();
} catch (PrinterException exception) {
System.err.println("Printing error: " + exception);
}
}
}
public int print(Graphics g, PageFormat format, int pageIndex) {
double width = 2.13 * 72;
double height = 3.38 * 72;
Graphics2D g2d = (Graphics2D)g;
Paper paper = new Paper();
paper.setSize(width, height);
paper.setImageableArea(30, 30, 30, 30);
format.setPaper(paper);
format.setOrientation(PageFormat.PORTRAIT);
g2d.translate(format.getImageableX(), format.getImageableY());
g2d.drawString("Hello", 10, 10);
return Printable.PAGE_EXISTS;
}
}
Thanks in advance!