підтримка кодування utf-8 за допомогою lpr


11

При спробі відправити текстовий файл на принтер через lprз xterm, зміст було зіпсовано до невпізнання, причиною якого була в кінцевому рахунку сходить до кодування файлу. Якщо я замість цього оброблю текст iconv(наприклад, iconv -f utf-8 -t ascii//TRANSLIT), то файл друкується нормально. Ще одна пропозиція, яку я натрапив - це встановлення формату документа (наприклад, lpr -o document-format=text/utf8), але це повертає помилку lpr: Unsupported document-format "text/utf8". Я завжди міг він же lprкоманда , щоб включати в себе обробку шляху iconv, але є більш загальний спосіб для вбудованої підтримки UTF-8 в CUPS/ lprсистем?

Редагувати: Моя ОС Debian 8, а мій менеджер вікон openbox(немає середовища для робочого столу). Я можу без проблем роздрукувати цей файл з MacOS X, а також із системи Debian7 / Gnome3.

З моєї нинішньої системи я повинен зазначити, що навіть після зміни кодування символів з UTF-8 на ASCII символи нового рядка не поважаються lpr, тому рядки з'єднуються разом та друкуються до досягнення поля паперу. Після перекодування та транслітерації iconvна MacOS X друк все ще працює нормально (тому випуск нового рядка також характерний для моєї поточної системи).


1
У мене немає глибоких знань CUPS, але воно, безумовно, повинно містити правила, як визначити тип документа (з типом MIME на виході) та як перекласти будь-який для цільового принтера, сюди входить растеризація, формування Postcript або PCL-файлу тощо. тип вашого принтера? Ви пробували a2ps? Яке кодування реально використовується на виході, коли ви намагаєтесь utf-8? (Я думаю, що це iso-8859-1)
Netch

@Netch: Дякую, що вказали на a2psфільтр. Я цього не знав. Розглянутий принтер - це скануючий лазерний принтер HP4650. Як можна визначити використовуване кодування CUPS? Насправді надруковані символи, які не мають помітного відношення до вхідних даних, включали грецьку гамму з великої літери, велику літеру С із седіллою, о з обрізним шрифтом та латинську літеру W та T. Крім цього, невідповідність результатам символів нового рядка в урізанні виходу з поля паперу.
user001

Здається, застосовано кодування ISO-8859-1. Ви можете легко перевірити це за допомогою його таблиці. Деякі пошуки пропонують зателефонувати як lpr -o document-format='text/plain;charset=utf-8'достатньо для друку за вашим бажанням, але це не змінює встановлений за замовчуванням установку CUPS, який здається застарілим.
Netch

Відповіді:


1

Те ж саме можна зробити з папсами;

#!/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 робить набагато кращу роботу, ніж склянки для тексту.


Дуже дякую за вашу відповідь. Я знаю papsі хотів дізнатись, чи існує можливість підтримки вроджених служб, CUPSщоб не вимагати використання зовнішніх залежностей.
user001

1

Я не знаю, чи вважаєте ви HPLIP зовнішньою залежністю, але ось офіційна рекомендація драйвера безпосередньо від CUPS.

Драйвер принтера CUPS: HP4650

і ось інформація про пакет в Debian Repo: HPLIPS

Як заявляє Сахі, ваша система не знає, як розтермінувати документ, не використовуючи такий інструмент, як папси. Встановлення пакету hplip та налаштування його на http://localhost:631використання рекомендованого драйвера вирішить вашу проблему. Для отримання додаткової інформації дивіться запис SystemPrinting на DebianWiki


Спасибі. У мене вже є остання версія HPLIP у моїй системі. Я спробував знайти, де можна вказати це, http://localhost:631але я нічого не міг знайти про вибір драйвера.
user001

Прочитайте Розділ 4
eyoung100


0

У вас повинно бути щось на кшталт:

text/plain              application/postscript  33      texttops

у вашому /etc/cups/mime.convsфайлі. Отже, я припускаю, що потрібно зробити, щоб виправити фільтр текстових стрічок. Під Debian /usr/lib/cups/filter/texttops- це сценарій оболонки, який використовує фільтр texttopdf та pdf2psкоманду. Ви можете спробувати замінити виклик texttopdf / pdf2ps на paps, але зауважте, що аргументи неоднакові . Мінімальний (оскільки текст надається на стандартний вхід, а результат PS надсилається на стандартний вихід) буде рядком, що містить:

paps

але ви можете додати варіанти, наприклад:

paps --font='Monospace 10'

Примітка: я не пробував. Просто спекуляції ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.