2012-03-13 39 views
5

Tôi đang làm việc để tạo hộp vẽ/chữ ký dựa trên canvas HTML5. Hiện tại, chúng tôi lưu canvas trên máy chủ dưới dạng PNG nhưng có thể dễ dàng lưu chuỗi base64 trong cơ sở dữ liệu. Bây giờ câu hỏi là làm thế nào để chúng tôi bao gồm chữ ký trên biên lai đã in.Bao gồm PNG in reciept trên LP2844Z (Máy in Zebra)

Hiện tại chúng tôi sử dụng trường^GF để xử lý hình ảnh in nhưng câu hỏi là định dạng tệp PNG cần phải có trong máy in. Tôi có thể đơn giản bao gồm chuỗi được mã hóa Base64 không? Hoặc tôi nên chuyển đổi nó thành một chuỗi Hex ASCII? Hay tôi thực sự nên chuyển đổi nó thành một bitmap trước?

Tôi thực sự không tìm thấy bất kỳ tài liệu nào về việc máy in cụ thể này có xử lý các tệp PNG hay thậm chí cách gửi chúng. Thông tin duy nhất tôi đã tìm thấy nói để gửi nó như là một bitmap B64 hoặc Z64, nhưng tôi thấy các tham chiếu để gửi một png ở khắp mọi nơi.

+0

Tôi nghĩ bạn cần cung cấp thêm thông tin chi tiết về cách bạn gửi thông tin này đến máy in. Thông qua API? Hoặc nếu biên lai của bạn đang được xem trong trình duyệt thì trình duyệt sẽ xử lý việc gửi hình ảnh đến máy in khi bạn in. Tất nhiên bạn có thể muốn thử nghiệm điều này đối với phần cứng để đảm bảo rằng bạn không vượt quá kích thước của khu vực in. – AaronLS

+0

Máy in Zebra có định dạng dữ liệu độc quyền vô cùng mơ hồ. Việc cố gắng chuyển đổi định dạng hình ảnh là quá nhiều, bạn sẽ đi trước chỉ bằng cách sử dụng trình điều khiển máy in Windows. PrintDocument trong mã của bạn. –

+0

Có cách nào tôi có thể chuyển đổi một XML thành một .lbl và xem những gì thực sự nhận được kết xuất? – cDecker32

Trả lời

5

Dữ liệu bạn cần gửi không phải là PNG. Bạn cần phải lấy hình ảnh và chuyển đổi nó sang màu đen và trắng và gửi dữ liệu đến máy in. Ví dụ: nếu bạn có hình ảnh có kích thước 40x50px, bạn sẽ lấy hình ảnh và loại bỏ thông tin màu để bạn có tổng cộng 2000 bit dữ liệu. Sau đó gửi ZPL của bạn xuống như^GFB, 250,250,5, {2000 bit dữ liệu}.

Tôi nhận được 250 bằng cách lấy 2000 bit/8 (bit/byte) để nhận 250 byte. Tôi có 5 bằng cách chia 40 x 8. Số hàng sẽ được tính tự động.

Điều tôi thấy hữu ích khi giao dịch với máy in Zebra là suy nghĩ về mặt bit. Tất cả đồ họa được thực hiện trên một mức độ bit.

Hãy nhớ rằng hình ảnh bạn sắp gửi sẽ thay đổi kích thước tùy thuộc vào DPI của máy in. Máy in 203 DPI sẽ hiển thị ví dụ của tôi ở khoảng .2in x .25in. Trên máy in 300 DPI, nó sẽ hiển thị ở khoảng .13in bởi .16in. Điều này là bởi vì máy in sẽ chỉ đặt dữ liệu thô vào định dạng và số px là số lượng các chấm hình ảnh sẽ được.

Hy vọng trợ giúp này!

Tham khảo: [1] ZPL Manuel trên trang 208 (^ GF page2).

+0

Tôi thực sự đến đây để đăng bài mà tôi đã tìm thấy điều này trong đêm qua, nhưng bạn đã thắng sir. Cuối cùng tôi đã tìm ra bằng cách chơi xung quanh với các con số chỉ định các tệp hình ảnh gốc. Bây giờ câu hỏi là làm thế nào để giảm một PNG RGB thành bitmap tiff/bitmap trong C#. – cDecker32

+0

Điều tôi thấy thật nhanh: 'System.Drawing.Bitmap b = new System.Drawing.Bitmap (" c: \\ test.jpg ");' 'System.Drawing.Bitmap b0 = CopyToBpp (b, 1) ; ' Tôi thấy rằng ở đây: http://www.wischik.com/lu/programmer/1bpp.html. – Ethan

+0

Yea trong suốt quá trình tôi làm việc về vấn đề này và vấn đề duy nhất hiện nay là một số vấn đề bù đắp. Rất có thể vì tôi đang chuyển đổi từ bmp. Tôi chỉ cần tìm ra loại đầu trang tập tin nào đang tìm kiếm ... – cDecker32

Các vấn đề liên quan