Java中的热打印

Java中的热打印,java,Java,我的热敏打印机有问题。每次我打印时,都会像这样添加一些代码/文本 %!PS-Adobe-3.0 %%BoundingBox: 17 19 595 773 %%Pages: 1 ..... %%BegingFeature: *InputSlot Upper 2 dict up /PageSize [612 792] put dup /ImagingBox null put setpagedevice %%EndFeature .... %%EndSetup %%Page: 1 1

我的热敏打印机有问题。每次我打印时,都会像这样添加一些代码/文本

%!PS-Adobe-3.0
%%BoundingBox: 17 19 595 773 
%%Pages: 1
..... 
%%BegingFeature: *InputSlot Upper 
2 dict up /PageSize [612 792] put dup /ImagingBox null put setpagedevice 
%%EndFeature 
.... 
%%EndSetup 
%%Page: 1 1 
%%BeginPageSetup 
%%EndPageSetup 
%%BeginDocument: nondsc 
Hello World 
%%EndDocument 
%%EOF 
我只是想打印“Hello World”,如何消除输出中不需要的文本?我的代码里有什么东西吗

我的打印机是ESC/POS P06-P型 我的平台:Mac OS 10.8.2

我的代码是

String defaultPrinter = PrintServiceLookup.lookupDefaultPrintService().getName();
        System.out.println("Default printer: " + defaultPrinter);
        PrintService service = PrintServiceLookup.lookupDefaultPrintService();
        // prints the famous hello world! plus a form feed
        InputStream is = new ByteArrayInputStream("hello world!\f".getBytes("UTF8"));

        PrintRequestAttributeSet  pras = new HashPrintRequestAttributeSet();

        pras.add(new Copies(1));

        DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
        Doc doc = new SimpleDoc(is, flavor, null);
        DocPrintJob job = service.createPrintJob();

        job.print(doc, pras);
        is.close();
任何帮助都将不胜感激

=======================================

当我尝试在CLI上打印它时,它会打印,但当我用java编写此代码时,它不会打印。waitFor()始终返回1。我确信文件在那里,它正在执行的目录也在那里。但当我只发出“ls”时,它将有一个输出

 List<String> cmd = new ArrayList<String>();
    cmd.add("lpr");
    cmd.add("-P");
    cmd.add("Prolific_Technology_Inc__IEEE_1284_Controller");
    cmd.add("-oraw");
    cmd.add("lalala.txt");

    ProcessBuilder pb = new ProcessBuilder(cmd);
    pb.directory(new File("src/org/cups4j/test"));
    Process p = pb.start();
    int res = p.waitFor();
    String line = null;
    try { 
        BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); 
        while( (line = input.readLine()) != null){
            System.out.println(line);
        }
     } catch (IOException e1) { 
         e1.printStackTrace();
         System.exit(0); 
     }    
    System.out.println("Result: " + res);
List cmd=new ArrayList();
命令添加(“lpr”);
cmd.添加(“-P”);
cmd.add(“Prolific_Technology_Inc___IEEE_1284_Controller”);
命令添加(“-oraw”);
cmd.add(“lalala.txt”);
ProcessBuilder pb=新的ProcessBuilder(cmd);
目录(新文件(“src/org/cups4j/test”);
进程p=pb.start();
int res=p.waitFor();
字符串行=null;
试试{
BufferedReader输入=新的BufferedReader(新的InputStreamReader(p.getInputStream());
而((line=input.readLine())!=null){
系统输出打印项次(行);
}
}捕获(IOE1){
e1.printStackTrace();
系统出口(0);
}    
System.out.println(“结果:+res”);

您可能会在打印机的(编程人员)手册中找到正确的转义序列

// ouput an escape sequence
byte ESC = 0x1b;
FileOutputStream out = new FileOutputStream("lalala.txt");
byte[] buf = new byte[]{ESC,0x31};
out.write(buf);
out.close();

你应该在谷歌上搜索“java pos打印”。您看到的是Postscript输出,但您需要原始ascii输出。您好@petermm,我用谷歌搜索了它,但没有找到。--嗨@petermm,我没能让它工作。我在控制台“lpr-P”中尝试了这一点,它成功地打印出了“lpr-P”多产的技术公司IEEE 1284控制器2。但是当我尝试上面的代码时,它添加了一些标题。2个避免混淆的提示:1。为工作文件夹(/tmp)使用绝对路径;2.将绝对路径放入打印程序/bin/lpr,并检查它是否确实存在(也可以是/bin/lp)。