Unterstützung für die utf-8-Codierung mit lpr


11

Beim Versuch, eine Textdatei über lprvon an den Drucker zu senden xterm, wurde der Inhalt bis zur Unkenntlichkeit beschädigt, dessen Ursache letztendlich auf die Codierung der Datei zurückzuführen war. Wenn ich stattdessen den Text mit iconv(z. B. iconv -f utf-8 -t ascii//TRANSLIT) verarbeite, wird die Datei normal gedruckt. Ein weiterer Vorschlag, auf den ich gestoßen bin, ist das Festlegen des Dokumentformats (z. B. lpr -o document-format=text/utf8), aber dies gibt den Fehler zurück lpr: Unsupported document-format "text/utf8". Ich könnte den lprBefehl immer als Alias für die Verarbeitung verwenden iconv, aber gibt es eine allgemeinere Möglichkeit für die native Unterstützung von utf-8 im CUPS/ lprsystem?

Bearbeiten: Mein Betriebssystem ist Debian 8 und mein Fenstermanager ist openbox(keine Desktop-Umgebung). Ich kann diese Datei problemlos unter MacOS X sowie auf einem Debian7 / Gnome3-System drucken.

In meinem aktuellen System sollte ich darauf hinweisen, dass auch nach dem Ändern der Zeichencodierung von UTF-8 in ASCII die Zeilenumbruchzeichen nicht berücksichtigt werden lpr, sodass die Zeilen miteinander verkettet und gedruckt werden, bis der Papierrand erreicht ist. Nach dem Umcodieren und Transliterieren unter iconvMacOS X funktioniert das Drucken weiterhin normal (daher ist das Newline-Problem auch für mein aktuelles System spezifisch).


1
Ich habe keine umfassenden CUPS-Kenntnisse, aber es sollte auf jeden Fall Regeln enthalten, wie der Dokumenttyp (mit MIME-Typ bei der Ausgabe) erkannt und für den Zieldrucker übersetzt wird. Dazu gehören Rasterung, das Erstellen von Postscript- oder PCL-Dateien usw. Könnten Sie bitte angeben Ihr Druckertyp? Hast du es versucht a2ps? Welche Codierung wird bei der Ausgabe wirklich verwendet, wenn Sie utf-8 ausprobieren? (Ich denke es ist iso-8859-1)
Netch

@Netch: Danke, dass du auf den a2psFilter hingewiesen hast . Ich war mir dessen nicht bewusst. Bei dem fraglichen Drucker handelt es sich um einen HP4650-Scanlaserdrucker. Wie kann man die von verwendete Codierung bestimmen CUPS? Zu den tatsächlich gedruckten Zeichen, die keine erkennbare Beziehung zur Eingabe haben, gehörten ein griechisches Großbuchstaben-Gamma, ein Großbuchstaben C mit einer Cedilla, ein O mit einem Zirkumflex sowie ein lateinisches Großbuchstaben W und T. Darüber hinaus führt dies dazu, dass Zeilenumbrüche nicht beachtet werden beim Abschneiden der Ausgabe am Papierrand.
user001

Die angewandte Codierung scheint iso-8859-1 zu sein. Sie können dies leicht anhand der Tabelle überprüfen. Einige Suchvorgänge schlagen vor, dass das Aufrufen von as lpr -o document-format='text/plain;charset=utf-8'ausreicht, um nach Ihren Wünschen zu drucken. Dies ändert jedoch nichts an der veralteten CUPS-Installationsvorgabe.
Netch

Antworten:


1

Das gleiche kann mit Paps gemacht werden;

#!/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 macht einen viel besseren Job als die Texttops der Tassen.


Vielen Dank für Ihre Antwort. Ich bin mir bewusst papsund wollte wissen, ob es eine Möglichkeit der nativen Unterstützung gibt, CUPSdamit keine externen Abhängigkeiten aufgerufen werden müssen.
user001

1

Ich weiß nicht, ob Sie HPLIP als externe Abhängigkeit betrachten, aber hier ist die offizielle Treiberempfehlung direkt von CUPS.

CUPS-Druckertreiber: HP4650

und hier sind die Paketinformationen im Debian Repo: HPLIPS

Wie Thushi feststellt, weiß Ihr System nicht, wie das Dokument ohne Verwendung eines Tools wie paps gerastert werden soll. Wenn Sie das hplip-Paket installieren und unter konfigurieren http://localhost:631, um den empfohlenen Treiber zu verwenden, wird Ihr Problem behoben . Weitere Informationen finden Sie im SystemPrinting-Eintrag im DebianWiki


Vielen Dank. Ich habe bereits die neueste Version von HPLIP auf meinem System. Ich habe versucht herauszufinden, wo man dies angeben kann, http://localhost:631aber ich konnte nichts über die Treiberauswahl finden.
user001

Lesen Sie Abschnitt 4
eyoung100


0

Sie sollten etwas haben wie:

text/plain              application/postscript  33      texttops

in Ihrer /etc/cups/mime.convsDatei. Ich nehme also an, dass der Texttops-Filter repariert werden muss. Unter Debian handelt es sich /usr/lib/cups/filter/texttopsum ein Shell-Skript, das den Texttopdf-Filter und den pdf2psBefehl verwendet. Sie können versuchen, den Aufruf von texttopdf / pdf2ps durch zu ersetzen. Beachten Sie papsjedoch, dass die Argumente nicht identisch sind. Das Minimum (da der Text für die Standardeingabe bereitgestellt wird und das ps-Ergebnis an die Standardausgabe gesendet wird) wäre eine Zeile, die nur Folgendes enthält:

paps

Möglicherweise möchten Sie jedoch Optionen hinzufügen, z.

paps --font='Monospace 10'

Hinweis: Ich habe es nicht versucht. Nur Spekulation ...

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.