hỗ trợ mã hóa utf-8 với lpr


11

Trong khi cố gắng gửi tệp văn bản đến máy in lprtừ xterm, nội dung bị hỏng ngoài khả năng nhận biết, nguyên nhân cuối cùng được truy nguyên từ mã hóa của tệp. Thay vào đó, nếu tôi xử lý văn bản bằng iconv(ví dụ iconv -f utf-8 -t ascii//TRANSLIT:), thì tệp được in bình thường. Một đề nghị khác mà tôi đã gặp là thiết lập định dạng tài liệu (ví dụ lpr -o document-format=text/utf8:), nhưng điều này trả về lỗi lpr: Unsupported document-format "text/utf8". Tôi có thể luôn luôn bí danh lprlệnh để bao gồm chế biến bằng iconv, nhưng là có một cách tổng quát hơn để hỗ trợ bản địa utf-8 trong CUPS/ lprhệ thống?

Chỉnh sửa: Hệ điều hành của tôi là Debian 8 và trình quản lý cửa sổ của tôi là openbox(không có môi trường máy tính để bàn). Tôi có thể in tệp này mà không gặp sự cố nào từ MacOS X cũng như từ hệ thống Debian7 / Gnome3.

Từ hệ thống hiện tại của tôi, tôi nên chỉ ra rằng ngay cả sau khi thay đổi mã hóa ký tự từ UTF-8 sang ASCII, các ký tự dòng mới không được tôn trọng lpr, do đó các dòng được nối với nhau và được in cho đến khi đạt được lề giấy. Sau khi mã hóa và chuyển ngữ bằng iconvMacOS X, việc in vẫn hoạt động bình thường (do đó, vấn đề về dòng mới cũng dành riêng cho hệ thống hiện tại của tôi).


1
Tôi chưa có kiến ​​thức về CUPS sâu sắc nhưng chắc chắn phải bao gồm các quy tắc về cách phát hiện loại tài liệu (với loại MIME trên đầu ra) và cách dịch bất kỳ cho máy in đích, điều này bao gồm rasterisation, tạo tệp Postcript hoặc PCL, v.v. loại máy in của bạn? Bạn đã thử a2pschưa Mã hóa nào thực sự được sử dụng trên đầu ra, khi bạn thử utf-8? (Tôi đoán là vậy iso-8859-1)
Netch

@Netch: Cảm ơn bạn đã chỉ ra a2psbộ lọc. Tôi đã không nhận thức được nó. Máy in trong câu hỏi là một máy in laser quét HP4650. Làm thế nào người ta có thể xác định mã hóa được sử dụng bởi CUPS? Các ký tự thực sự được in, không liên quan rõ ràng đến đầu vào, bao gồm một gamma vốn của Hy Lạp, thủ đô C với một cây tuyết tùng, một o với một dấu mũ, và một chữ viết hoa W và T. Ngoài ra, việc không tôn trọng kết quả của các ký tự dòng mới cắt ngắn đầu ra ở lề giấy.
dùng001

Có vẻ như mã hóa được áp dụng là iso-8859-1. Bạn có thể dễ dàng kiểm tra điều này bằng cách sử dụng bảng của nó. Một số tìm kiếm cho thấy gọi là lpr -o document-format='text/plain;charset=utf-8'sẽ đủ để in như bạn muốn, nhưng điều này không thay đổi mặc định cài đặt CUPS của bạn có vẻ lỗi thời.
Lấy

Câu trả lời:


1

Điều tương tự có thể được thực hiện với paps;

#!/bin/bash
#This script converts UTF-8 txt to postscript
paps | lpr
Sometimes you need to specify the prinqueue;

#!/bin/bash
# This script converts UTF-8 txt to postscript
paps | lpr -P lj

Paps thực hiện công việc tốt hơn nhiều so với texttops cup.


Cảm ơn rất nhiều vì trả lời của bạn. Tôi biết papsvà muốn biết liệu có khả năng hỗ trợ riêng bên trong CUPSđể không phụ thuộc vào bên ngoài không.
dùng001

1

Tôi không biết nếu bạn coi HPLIP là một phụ thuộc bên ngoài, nhưng đây là đề xuất trình điều khiển chính thức trực tiếp từ CUPS.

Trình điều khiển máy in CUPS: HP4650

và Đây là thông tin Gói trong Repo Debian: HPLIPS

Vì vậy, hệ thống của bạn không biết cách rasterize tài liệu mà không sử dụng một công cụ như paps. Cài đặt gói hplip và định cấu hình http://localhost:631để sử dụng trình điều khiển được đề xuất sẽ giải quyết vấn đề của bạn. Để biết thêm thông tin, hãy xem mục SystemPrinting tại DebianWiki


Cảm ơn. Tôi đã có phiên bản HPLIP mới nhất trên hệ thống của mình. Tôi đã cố gắng tìm nơi người ta có thể chỉ định điều này http://localhost:631nhưng tôi không thể tìm thấy bất cứ điều gì về lựa chọn trình điều khiển.
user001



0

Bạn nên có một cái gì đó như:

text/plain              application/postscript  33      texttops

trong /etc/cups/mime.convstập tin của bạn Vì vậy, tôi cho rằng những gì cần phải làm là sửa bộ lọc texttops. Trong Debian, đây là /usr/lib/cups/filter/texttopstập lệnh shell sử dụng bộ lọc texttopdf và pdf2pslệnh. Bạn có thể thử thay thế lời gọi texttopdf / pdf2ps bằng cách paps, nhưng lưu ý rằng các đối số không giống nhau. Tối thiểu (vì văn bản được cung cấp cho đầu vào tiêu chuẩn và kết quả ps được gửi đến đầu ra tiêu chuẩn) sẽ là một dòng chỉ chứa:

paps

nhưng bạn có thể muốn thêm tùy chọn, ví dụ:

paps --font='Monospace 10'

Lưu ý: Tôi chưa thử. Chỉ cần suy đoán ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.