dukungan untuk pengkodean utf-8 dengan lpr

11

Ketika mencoba mengirim file teks ke melalui printer lprdari xterm, konten rusak tidak dapat dikenali, penyebabnya akhirnya ditelusuri ke pengkodean file. Jika saya malah memproses teks dengan iconv(misalnya, iconv -f utf-8 -t ascii//TRANSLIT), maka file tersebut dicetak secara normal. Saran lain yang saya temui adalah mengatur format dokumen (misalnya, lpr -o document-format=text/utf8), tetapi ini mengembalikan kesalahan lpr: Unsupported document-format "text/utf8". Saya selalu bisa alias lprperintah untuk memasukkan pemrosesan oleh iconv, tetapi apakah ada cara yang lebih umum untuk dukungan utf-8 asli di CUPS/ lprsistem?

Sunting: OS saya adalah Debian 8 dan manajer jendela saya openbox(tidak ada lingkungan desktop). Saya dapat mencetak file ini tanpa masalah dari MacOS X maupun dari sistem Debian7 / Gnome3.

Dari sistem saya saat ini, saya harus menunjukkan bahwa bahkan setelah mengubah pengkodean karakter dari UTF-8 ke ASCII, karakter baris baru tidak dihormati oleh lpr, sehingga garis digabungkan dan dicetak hingga margin kertas tercapai. Setelah pengodean ulang dan transliterasi dengan iconvpada MacOS X, pencetakan masih berfungsi normal (jadi masalah baris baru juga khusus untuk sistem saya saat ini).

user001
sumber
1
Saya belum memiliki pengetahuan CUPS yang mendalam, tetapi itu pasti harus mencakup aturan bagaimana mendeteksi tipe dokumen (dengan tipe MIME pada output) dan bagaimana menerjemahkan apapun untuk printer target, ini termasuk rasterisasi, membentuk file Postscript atau PCL, dll. Bisakah Anda menentukan jenis printer Anda? Apakah kamu sudah mencoba a2ps? Pengkodean apa yang benar-benar digunakan pada keluaran, ketika Anda mencoba utf-8? (Saya rasa itu iso-8859-1)
Netch
@Netch: Terima kasih telah menunjukkan a2psfilter. Saya tidak menyadarinya. Printer yang dimaksud adalah printer laser pemindaian HP4650. Bagaimana cara menentukan pengkodean yang digunakan CUPS? Karakter yang benar-benar dicetak, yang tidak memiliki hubungan yang dapat dilihat dengan input, termasuk gamma modal Yunani, kapital C dengan cedilla, o dengan sirkumfleks, dan kapital Latin W dan T. Selain itu, kegagalan untuk menghormati hasil karakter baris baru dalam pemotongan output pada margin kertas.
user001
Tampaknya pengkodean yang diterapkan adalah iso-8859-1. Anda dapat dengan mudah memeriksa ini menggunakan tabelnya. Beberapa pencarian menyarankan agar panggilan lpr -o document-format='text/plain;charset=utf-8'sudah cukup untuk mencetak seperti yang Anda inginkan, tetapi ini tidak mengubah default instalasi CUPS Anda yang tampaknya sudah usang.
Netch

Jawaban:

1

Hal yang sama dapat dilakukan dengan 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 melakukan pekerjaan yang jauh lebih baik daripada texttops cangkir.

Thushi
sumber
Terima kasih banyak atas balasan Anda. Saya sadar papsdan ingin tahu apakah ada kemungkinan dukungan asli dalam CUPSsehingga dependensi eksternal tidak perlu dipanggil.
user001
1

Saya tidak tahu apakah Anda menganggap HPLIP sebagai ketergantungan eksternal, tetapi berikut ini adalah rekomendasi driver resmi langsung dari CUPS.

CUPS Driver Printer: HP4650

dan Ini adalah info Paket di Debian Repo: HPLIPS

Seperti yang dinyatakan Thushi, sistem Anda tidak tahu cara meraster dokumen tanpa menggunakan alat seperti paps. Menginstal paket hplip dan mengkonfigurasi di http://localhost:631menggunakan driver yang direkomendasikan akan menyelesaikan masalah Anda. Untuk info lebih lanjut, lihat entri SystemPrinting di DebianWiki

eyoung100
sumber
Terima kasih. Saya sudah memiliki versi terbaru HPLIP di sistem saya. Saya mencoba mencari di mana orang dapat menentukan ini http://localhost:631tetapi saya tidak dapat menemukan apa pun tentang pemilihan driver.
user001
Baca Bagian 4
eyoung100
0

Anda harus memiliki sesuatu seperti:

text/plain              application/postscript  33      texttops

dalam /etc/cups/mime.convsfile Anda . Jadi, saya kira apa yang perlu dilakukan adalah memperbaiki filter texttops. Di bawah Debian, ini adalah /usr/lib/cups/filter/texttopsskrip shell yang menggunakan filter texttopdf dan pdf2psperintah. Anda dapat mencoba mengganti permintaan texttopdf / pdf2ps dengan paps, tetapi perhatikan bahwa argumennya tidak sama. Minimal (karena teks diberikan ke input standar dan hasil ps dikirim ke output standar) akan menjadi baris yang hanya berisi:

paps

tetapi Anda mungkin ingin menambahkan opsi, misalnya:

paps --font='Monospace 10'

Catatan: Saya belum mencoba. Hanya spekulasi ...

vinc17
sumber