obsługa kodowania utf-8 za pomocą lpr


11

Podczas próby wysłania pliku tekstowego do drukarki za pośrednictwem lprz xterm, treść została uszkodzona nie do poznania, czego przyczyną ostatecznie było kodowanie pliku. Jeśli zamiast tego przetwarzam tekst za pomocą iconv(np. iconv -f utf-8 -t ascii//TRANSLIT), Plik jest drukowany normalnie. Inną sugestią, na jaką natknąłem się, jest ustawienie formatu dokumentu (np. lpr -o document-format=text/utf8), Ale to zwraca błąd lpr: Unsupported document-format "text/utf8". Zawsze mogłem użyć aliasu lprpolecenia włączenia przetwarzania iconv, ale czy istnieje bardziej ogólny sposób na natywną obsługę utf-8 w CUPS/ lprsystemie?

Edycja: Mój system operacyjny to Debian 8, a moim menedżerem okien jest openbox(brak środowiska pulpitu). Mogę wydrukować ten plik bez problemu z MacOS X, a także z systemu Debian7 / Gnome3.

Z mojego obecnego systemu powinienem zauważyć, że nawet po zmianie kodowania znaków z UTF-8 na ASCII znaki nowego wiersza nie są przestrzegane lpr, więc wiersze są łączone razem i drukowane aż do osiągnięcia marginesu papieru. Po przekodowaniu i transliteracji iconvw systemie MacOS X drukowanie nadal działa normalnie (więc problem nowej linii jest również specyficzny dla mojego obecnego systemu).


1
Nie mam głębokiej wiedzy na temat CUPS, ale zdecydowanie powinien zawierać zasady wykrywania typu dokumentu (z typem wyjściowym MIME) i tłumaczenia dowolnej drukarki docelowej, w tym rasteryzacji, tworzenia pliku Postscript lub PCL itp. Czy możesz podać typ twojej drukarki? Próbowałeś a2ps? Jakie kodowanie jest naprawdę używane na wyjściu, gdy wypróbujesz utf-8? (Chyba tak iso-8859-1)
Netch

@Netch: Dziękujemy za wskazanie a2psfiltra. Nie byłam tego świadoma. Ta drukarka to skanująca drukarka laserowa HP4650. Jak określić kodowanie używane przez CUPS? Znaki rzeczywiście wydrukowane, które nie mają dostrzegalnego związku z danymi wejściowymi, obejmowały grecką gamma kapitałową, wielką C z cedillą, o z daszkiem, oraz łacińską literę W i T. Poza tym nieprzestrzeganie wyników znaków nowej linii w obcięciu produkcji na marginesie papieru.
user001

Wydaje się, że zastosowane kodowanie to iso-8859-1. Możesz to łatwo sprawdzić za pomocą jego tabeli. Niektóre wyszukiwanie sugeruje lpr -o document-format='text/plain;charset=utf-8', że wystarczy zadzwonić , aby wydrukować tyle, ile chcesz, ale nie zmienia to domyślnej instalacji CUPS, która wydaje się przestarzała.
Netch

Odpowiedzi:


1

To samo można zrobić z papkami;

#!/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 wykonuje znacznie lepszą robotę niż blaty tekstowe pucharów.


Dziękuję bardzo za odpowiedź. Jestem świadomy papsi chciałem wiedzieć, czy istnieje możliwość natywnego wsparcia wewnątrz, CUPSaby nie trzeba było wywoływać zewnętrznych zależności.
user001

1

Nie wiem, czy uważasz HPLIP za zewnętrzną zależność, ale oto oficjalna rekomendacja sterownika bezpośrednio z CUPS.

Sterownik drukarki CUPS: HP4650

a oto informacje o pakiecie w Debian Repo: HPLIPS

Jak twierdzi Thushi, twój system nie wie, jak zrasteryzować dokument bez użycia narzędzia takiego jak paps. Zainstalowanie pakietu hplip i skonfigurowanie go pod kątem http://localhost:631używania zalecanego sterownika rozwiąże problem. Aby uzyskać więcej informacji, zobacz wpis SystemPrinting na DebianWiki


Dzięki. Mam już najnowszą wersję HPLIP w moim systemie. Próbowałem znaleźć, gdzie można to określić, http://localhost:631ale nie mogłem znaleźć niczego na temat wyboru sterownika.
user001

Przeczytaj sekcję 4
eyoung100


0

Powinieneś mieć coś takiego:

text/plain              application/postscript  33      texttops

w twoim /etc/cups/mime.convspliku. Przypuszczam, że to, co należy zrobić, to naprawić filtr tabletów tekstowych. W Debianie /usr/lib/cups/filter/texttopsjest to skrypt powłoki korzystający z filtru texttopdf i pdf2pspolecenia. Możesz spróbować zastąpić wywołanie texttopdf / pdf2ps przez paps, ale pamiętaj, że argumenty nie są takie same. Minimalna (ponieważ tekst jest dostarczany do standardowego wejścia, a wynik ps jest wysyłany do standardowego wyjścia) byłby wierszem zawierającym:

paps

ale możesz chcieć dodać opcje, np .:

paps --font='Monospace 10'

Uwaga: nie próbowałem. Po prostu spekulacje ...

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.