我正在尝试在热敏打印机上打印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 ,它只是无休止地打印图像 - 但是没有剪切。 (是的,我必须打开和关闭打印机)然而,这告诉我它是可能的。
我的问题是,怎么样?是否有任何可以完成这项工作的东西,例如"打印但不切割?"或类似的东西 - "这是一个不会被剪切的磁带?"
任何其他建议将不胜感激。
答案 0 :(得分:0)
可以在打印机设置中设置裁切选项。
对于Windows,请打开设备和打印机,然后在打印机上单击鼠标右键,然后选择打印首选项和转到选项卡操作,然后选择文档末尾和页面末尾。然后更改剪纸选项