支持使用lpr进行utf-8编码


11

尝试通过lprfrom 将文本文件发送到打印机时xterm,内容被破坏,无法识别,其原因最终被追溯到文件的编码。如果我改用iconv(例如iconv -f utf-8 -t ascii//TRANSLIT)处理文本,则文件将正常打印。我遇到的另一个建议是设置文档格式(例如lpr -o document-format=text/utf8),但这会返回错误lpr: Unsupported document-format "text/utf8"。我总是可以给lpr命令加上别名,以包括处理iconv,但是在CUPS/ lpr系统中是否有更通用的本机utf-8支持?

编辑:我的操作系统是Debian 8,我的窗口管理器是openbox(没有桌面环境)。我可以从MacOS X以及Debian7 / Gnome3系统毫无问题地打印该文件。

从我当前的系统中,我应该指出,即使将字符编码从UTF-8更改为ASCII,换行符也不会受到的尊重lpr,因此,这些行将连接在一起并打印直到达到页边距。在iconvMacOS X上进行重新编码和音译后,打印仍然可以正常工作(因此换行问题也特定于我当前的系统)。


1
我对CUPS并不了解,但是它绝对应该包含一些规则,这些规则如何检测文档类型(输出上带有MIME类型)以及如何为目标打印机进行翻译,包括光栅化,形成Postscript或PCL文件等。请您指定您的打印机类型?你尝试了a2ps吗?当您尝试utf-8时,实际上在输出上使用哪种编码?(我猜是iso-8859-1
Netch

@Netch:感谢您指出a2ps过滤器。我没有意识到。有问题的打印机是HP4650扫描激光打印机。一个人如何确定使用的编码CUPS?实际打印的字符与输入没有明显关系,包括希腊大写字母gamma,带小调的大写字母C,带抑扬音的o和拉丁字母的大写W和T。此外,不遵守换行符的结果在纸边距处截断输出。
2014年

似乎应用的编码是iso-8859-1。您可以使用其表轻松检查此内容。一些搜索建议调用as lpr -o document-format='text/plain;charset=utf-8'将足以打印所需的内容,但这并不会更改您的CUPS安装默认设置(看上去已过时)。
Netch

Answers:


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并想知道内部是否有本机支持的可能性,CUPS因此无需调用外部依赖项。
2014年

1

我不知道您是否认为HPLIP是外部依赖项,但这是直接来自CUPS的官方驱动程序建议。

CUPS打印机驱动程序:HP4650

这是Debian Repo中的软件包信息:HPLIPS

正如Suchhi所说,如果不使用paps之类的工具,您的系统将不知道如何光栅化文档。安装hplip软件包并将其配置http://localhost:631为使用推荐的驱动程序将解决您的问题。有关更多信息,请参见DebianWiki上SystemPrinting条目。


谢谢。我的系统上已经有最新版本的HPLIP。我试图找到可以在其中指定此内容的地方,http://localhost:631但找不到关于驱动程序选择的任何信息。
user001 2014年



0

您应该具有以下内容:

text/plain              application/postscript  33      texttops

在您的/etc/cups/mime.convs文件中。因此,我想需要做的是修复texttops过滤器。在Debian下,它是/usr/lib/cups/filter/texttops,它是一个使用texttopdf过滤器和pdf2ps命令的shell脚本。您可以尝试用替换texttopdf / pdf2ps调用paps,但请注意,参数并不相同。最小行(因为将文本提供给标准输入,并将ps结果发送到标准输出)将是仅包含以下内容的行:

paps

但您可能要添加选项,例如:

paps --font='Monospace 10'

注意:我没有尝试过。只是猜测...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.