用Java打印热敏打印机上的文本和二维码

时间:2015-09-01 12:26:49

标签: java printing qr-code epson

我会尽量直接解释,英语不是我的第一语言=)。

我有一台热敏打印机Epson TM-20,我通过USB将它安装在我的电脑上,我可以从'Windows>打印页面测试设备和打印机'。我正在开发一个使用Java在该打印机上打印报告的软件,在这种情况下我必须通过Windows发送报告,这意味着使用打印机的名称,如下所示:

PrintService ps = getPrintService("EPSON TM-T20");
DocPrintJob docPrint = null;
docPrint = ps.createPrintJob();
docPrint.getPrintService();
InputStream stream = new ByteArrayInputStream(out.toByteArray());
DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
Doc doc = new SimpleDoc(stream, flavor, null);
docPrint.print(doc, getAtributoSet());

public static PrintRequestAttributeSet getAtributoSet() {
    PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
    aset.add(OrientationRequested.PORTRAIT);
    aset.add(new JobName("Report 1", null));
    aset.add(new Copies(1));
    return aset;
}

这段代码有效......然后我也得到了一个QrCode,就像那样:

String qrCodeText= "http://stackoverflow.com/questions/ask";
int size = 125;
String fileType = "png";
File qrFile = new File(filePath);
createQRImage(qrFile, qrCodeText, size, fileType);

在此之后,我在变量qrFile中有一个“png”图像。 我想打印这个...

----------- / N
我的标题/ n
嗨,我在这里解释/ n
Qr代码如下./n
----------- / N
“”来自qrFile的图像QRCODE“”“ ----------- / N
我的页脚/ n
谢谢你的帮助!! / n
----------- / N

感谢您的时间!

1 个答案:

答案 0 :(得分:0)

@AlexR 这个。

private static void createQRImage(File qrFile, String qrCodeText, int size,
        String fileType) throws WriterException, IOException {
    // Create the ByteMatrix for the QR-Code that encodes the given String
    Hashtable hintMap = new Hashtable();
    hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
    QRCodeWriter qrCodeWriter = new QRCodeWriter();
    BitMatrix byteMatrix = qrCodeWriter.encode(qrCodeText,
            BarcodeFormat.QR_CODE, size, size, hintMap);
    // Make the BufferedImage that are to hold the QRCode
    int matrixWidth = byteMatrix.getWidth();
    BufferedImage image = new BufferedImage(matrixWidth, matrixWidth,
            BufferedImage.TYPE_INT_RGB);
    image.createGraphics();

    Graphics2D graphics = (Graphics2D) image.getGraphics();
    graphics.setColor(Color.WHITE);
    graphics.fillRect(0, 0, matrixWidth, matrixWidth);
    // Paint and save the image using the ByteMatrix
    graphics.setColor(Color.BLACK);

    for (int i = 0; i < matrixWidth; i++) {
        for (int j = 0; j < matrixWidth; j++) {
            if (byteMatrix.get(i, j)) {
                graphics.fillRect(i, j, 1, 1);
            }
        }
    }
    ImageIO.write(image, fileType, qrFile);
}

虽然我也有这个,但是要创建qrCode:

ByteArrayOutputStream out = QRCode.from(urlQrCode).to(ImageType.PNG).withSize(250, 250).stream();

最后一个我使用zxing中的qrGen库...