Я пытаюсь напечатать QR-коды на этикетках, используя термопринтер pos80 из проекта java, используя собственный API печати awt, вот как выглядит результат.
Пожалуйста, помогите мне, как решить эту проблему и напечатать QR-коды в центре этикетки один за другим.
Я использую javac 1.8.0_101, netbeans11.0 , qrgen4 для генерации QR-кодов.
Код, который я использовал для считывания изображения QR-кода из dir и печати через awt, выглядит следующим образом:
public class PrinterService implements Printable {
private PrinterJob printerJob;
private PageFormat pageFormat;
private Paper paper;
private final int MARGIN = 1;
public PrinterService() {
printerJob = PrinterJob.getPrinterJob();
pageFormat = printerJob.defaultPage(); // Getting the page format.
paper = new Paper(); // Create a new paper...
paper.setImageableArea(MARGIN, MARGIN, pageFormat.getWidth(), pageFormat.getHeight());
pageFormat.setPaper(paper);
pageFormat.setOrientation(PageFormat.PORTRAIT);
printerJob.setPrintable(this, pageFormat);
try {
printerJob.print();
} catch (PrinterException ex) {
JOptionPane.showMessageDialog(null, "Printing Failed, Error: " + ex.toString());
}
}
@Override
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
if (pageIndex > 0) {
return NO_SUCH_PAGE;
}
float marginTop = (float) 70.83;
Graphics2D g2d = (Graphics2D) graphics;
ImageIcon imageIcon = new ImageIcon("qrcode75b75.gif");
Image image = imageIcon.getImage();
g2d.drawImage(image, 20, (int) (marginTop + 10), imageIcon.getImageObserver());
g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
return PAGE_EXISTS;
}
}