2017-06-28 31 views
5

Tôi đang in biên nhận bằng máy in Custom TG2480-H. Tôi đã nhận được tất cả các biên nhận làm việc ngoại trừ logo.In logo trên máy in Tùy chỉnh TG2480H

Tôi có một đơn sắc .bmp tệp đại diện cho biểu trưng và có các điều chỉnh đúng.

Tôi lấy các tập tin, sử dụng các loại phản ứng khác nhau:

this.http.get('/assets/images/brand/logo-bnw.bmp', { 
    responseType: ResponseContentType.Blob 
}).subscribe((response: Response) => { 
    console.log('Blob bytes', this.kiowarePrintService.getBytesFromText(response.text())); 
}); 
this.http.get('/assets/images/brand/logo-bnw.bmp', { 
    responseType: ResponseContentType.Text 
}).subscribe((response: Response) => { 
    console.log('Text bytes', this.kiowarePrintService.getBytesFromText(response.text())); 
}); 
this.http.get('/assets/images/brand/logo-bnw.bmp', { 
    responseType: ResponseContentType.ArrayBuffer 
}).subscribe((response: Response) => { 
    console.log('ArrayBuffer bytes', this.kiowarePrintService.getBytesFromText(response.text())); 
}); 

Đây là tài liệu về ResponseContentType và các giá trị khác nhau nó có thể có.

Đây là mã cho getBytesFromText:

getBytesFromText(text: string) { 
    const bytes: number[] = []; 
    for (let i = 0; i < text.length; i++) { 
     bytes.push(text.charCodeAt(i)); 
    } 
    return bytes; 
    } 

Chuyển đổi các phản ứng với byte in các giá trị:

Blob bytes (2) [123, 125] 

Text bytes (951) [66, 77, 65533, 3, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 40, 0, 0, 0, 120, 0, 0, 0, 56, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 65533, 3, 0, 0, 65533, 14, 0, 0, 65533, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65533, 65533, 65533, 0, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 0, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 0, 65533, 65533, 65533, 65533, 65533, 65533…] 

ArrayBuffer bytes (479) [19778, 958, 0, 0, 0, 62, 0, 40, 0, 120, 0, 56, 0, 1, 1, 0, 0, 896, 0, 3780, 0, 3780, 0, 0, 0, 0, 0, 0, 0, 65535, 255, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 255, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 255, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 255, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 255, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 255, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 255, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 255, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 255, 65535, 65535, 65535, 65535, 65535…] 

Những tất cả dường như không đúng, lượng Blob byte là cách quá thấp và cả hai đều chứa số lớn hơn byte (> 255).

Tôi đã cố gắng gửi các byte đến máy in anyway và đã đưa ra như sau:

EDIT: Đã cố gắng để quảng cáo d 'content-type': 'image/bmp' tiêu đề:

const headers: Headers = new Headers({'Content-Type': 'image/bmp'}); 
    const options: RequestOptions = new RequestOptions({headers: headers}); 
    this.http.get('/assets/images/brand/logo-bnw.bmp', options).subscribe((response: Response) => { 
     console.log('image/bmp bytes', this.kiowarePrintService.getBytesFromText(response.text())); 
    }); 

Logs này:

image/bmp bytes (951) [66, 77, 65533, 3, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 40, 0, 0, 0, 120, 0, 0, 0, 56, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 65533, 3, 0, 0, 65533, 14, 0, 0, 65533, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65533, 65533, 65533, 0, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 0, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 65533, 0, 65533, 65533, 65533, 65533, 65533, 65533…] 

Mà có vẻ như nó cũng giống như phản ứng văn bản

+0

Bạn đang nói rằng bạn đã cố gắng 'gửi các byte đến máy in. Bạn đã sử dụng phương pháp nào? Bạn đã sử dụng window.print() hoặc bạn đã tạo plugin trình duyệt khác? – wannadream

Trả lời

1

Bạn đang sử dụng response.text() cho TẤT CẢ các loại trở lại . Trong trường hợp dữ liệu nhị phân, bạn nên giữ nó như một đốm màu. Bạn có thể truy cập các byte cơ bản mà không cần chuyển đổi sang văn bản bằng cách sử dụng

response.arrayBuffer() 

Điều đó sẽ cung cấp cho bạn đúng mảng byte mà bạn mong đợi.

Câu hỏi này cũng liên quan: Get Image or byte data with http

Câu trả lời đầu mất phương pháp làm:

var blob = new Blob([new Uint8Array(response._body)] 
Các vấn đề liên quan