热敏打印机 - 禁用自动切割(仅在打印图像时)

时间:2014-08-13 14:14:10

标签: java printing thermal-printer

我正在尝试在热敏打印机上打印GIF,然后不切割磁带。我发现在没有打印机切割的情况下将字符串打印为InputStream对我来说没有问题。

我发现这个方便的代码可以打印GIF。

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;

import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.swing.ImageIcon;

public class ImagePrint {
  public static void main(String[] args) throws Exception {
    PrintService service = PrintServiceLookup.lookupDefaultPrintService();
    DocPrintJob job = service.createPrintJob();
    DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
    SimpleDoc doc = new SimpleDoc(new MyPrintable(), flavor, null);
    job.print(doc, null);
  }
}

class MyPrintable implements Printable {
  ImageIcon printImage = new javax.swing.ImageIcon("a.gif");

  public int print(Graphics g, PageFormat pf, int pageIndex) {
    Graphics2D g2d = (Graphics2D) g;
    g.translate((int) (pf.getImageableX()), (int) (pf.getImageableY()));
    if (pageIndex == 0) {
      double pageWidth = pf.getImageableWidth();
      double pageHeight = pf.getImageableHeight();
      double imageWidth = printImage.getIconWidth();
      double imageHeight = printImage.getIconHeight();
      double scaleX = pageWidth / imageWidth;
      double scaleY = pageHeight / imageHeight;
      double scaleFactor = Math.min(scaleX, scaleY);
      g2d.scale(scaleFactor, scaleFactor);
      g.drawImage(printImage.getImage(), 0, 0, null);
      return Printable.PAGE_EXISTS;
    }
    return Printable.NO_SUCH_PAGE;
  }
}

http://www.java2s.com/Tutorial/Java/0261__2D-Graphics/Printanimageout.htm

这需要我的图像并打印出来 - 然而,某些东西(我不知道是什么)会导致打印机激活切割并切断胶带。因为我想在收据的开头写图像 - 这不是我想要的。

不知怎的,我发现如果用 PAGE_EXISTS 替换 NO_SUCH_PAGE ,它只是无休止地打印图像 - 但是没有剪切。 (是的,我必须打开和关闭打印机)然而,这告诉我它是可能的。

我的问题是,怎么样?是否有任何可以完成这项工作的东西,例如"打印但不切割?"或类似的东西 - "这是一个不会被剪切的磁带?"

任何其他建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

可以在打印机设置中设置裁切选项。

对于Windows,请打开设备和打印机,然后在打印机上单击鼠标右键,然后选择打印首选项和转到选项卡操作,然后选择文档末尾和页面末尾。然后更改剪纸选项