0

サーマルプリンターに問題があります。印刷するたびに、このように追加されるコード/テキストがいくつかあります。

%!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 

「HelloWorld」を印刷したかったのですが、出力内の不要なテキストを削除するにはどうすればよいですか?私のコードに何かありますか?

私のプリンターは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);
4

1 に答える 1

0

正しいエスケープ シーケンスは、おそらくプリンターの (プログラマー向けの) マニュアルに記載されています。

// ouput an escape sequence
byte ESC = 0x1b;
FileOutputStream out = new FileOutputStream("lalala.txt");
byte[] buf = new byte[]{ESC,0x31};
out.write(buf);
out.close();
于 2013-02-13T06:47:25.180 に答える