从 vim 打印到 Postscript

发布于 2024-08-27 13:29:14 字数 286 浏览 7 评论 0原文

我在从 Vim 打印到 postscript 时遇到问题。

我使用 utf-8 编码和捷克语字符(如“ščřž”),但在输出中我得到的是上问号而不是正确的字符。

vim --version

VIM - Vi IMproved 7.2

+iconv +多字节 +postscript

打印机设置:

set printoptions=paper:A4,duplex:off,collat​​e:n,syntax:n

打印机字体:courier

I have problem with printing to postscript from Vim.

I'm, using utf-8 encoding with czech characters like 'ščřž' but in the output I get upside question mark instead of the correct characters.

vim --version

VIM - Vi IMproved 7.2

+iconv
+multi_byte
+postscript

printer settings:

set printoptions=paper:A4,duplex:off,collate:n,syntax:n

printer font: courier

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

川水往事 2024-09-03 13:29:14

鲁库拉,这是错误的。关于你的消息,我明白如果我们不设置
'printencoding' vim 会将我们的消息 (utf-8) 转换为 'latin1',因此我们
有问题。 我认为这不是真的。

我在 vim 中打印了文件(带有西里尔字母符号)使用 printencoding=utf-8 by :hardcopy
我还得到了反向问号而不是正确的符号。
我的设置:
1) 打印字体=utf-8
2)编码=utf-8
3)文件编码=utf-8。
我认为 PostScript 存在问题。如果您尝试通过 lp/lpr 在控制台/终端(不是 GUI)中打印某些内容(例如使用西里尔字母符号),您将得到不正确的符号(在西里尔字母所在的位置)。这是终端中从非 ASCII 文本到 PostScript 的转换问题。
Vim 使用 printexpr 并有默认值:
printexpr=system('lpr' . (&printdevice == '' ? '' : ' -P' . &printdevice) . ' ' . v:fname_in) .删除(v:fname_in)+ v:shell_error。
我不知道如何解决这个问题。我读到这是常见的 Unix/Linux 问题。
但是你应该尝试重写 printexpr 以使用 a2ps、enscript 或类似的东西。

Rkulla, that's wrong. As regards your message, I've understood that if we don't set
'printencoding' vim will convert our message (utf-8) to 'latin1' and because of that we
have problems. I think that's not true.

I printed file (with Cyrillic symbols) in vim with printencoding=utf-8 by :hardcopy
I also get reverse question mark instead of the correct symbols.
My settings:
1) printfont = utf-8
2) encoding = utf-8
3) fileencoding = utf-8.
I think problem in PostScript. If you try to print something (for example with Cyrillic symbols) in console/terminal (not GUI) by lp/lpr you will get incorrect symbols (in place where Cyrillic). That's conversion problems from non-ASCII text to PostScript in terminal.
Vim use printexpr and has default:
printexpr=system('lpr' . (&printdevice == '' ? '' : ' -P' . &printdevice) . ' ' . v:fname_in) . delete(v:fname_in) + v:shell_error.
I don't know how to fix that. I read that's general Unix/Linux problems.
But you should try rewrite printexpr for using a2ps, enscript or similar.

人生百味 2024-09-03 13:29:14

通过转换为 HTML 将缓冲区发送到浏览器,然后从那里打印:

:TOhtml | w | !open -a Safari %

例如,我在 vim 中有这个:
输入图片此处描述

如果我输入,

:ha

我会得到以下内容:
输入图片此处描述

但是当我将其发送到浏览器时,我得到了这个(带有配色方案!):

在此处输入图像描述

我的 .vimrc 中有这个,它会删除新的 html 缓冲区并存储文件:

nnoremap <F2> <ESC> :TOhtml <bar> w <bar> !open -a Safari % <CR> <bar> ZQ <CR> <bar> execute '!rm %:p.html' <CR>

Send the buffer to the browser by converting to HTML, then print from there:

:TOhtml | w | !open -a Safari %

For example I have this in vim:
enter image description here

If I type

:ha

I get this:
enter image description here

But when I send it to the browser I get this (with color scheme!):

enter image description here

I have this in my .vimrc, which deletes the new html buffer and stored file:

nnoremap <F2> <ESC> :TOhtml <bar> w <bar> !open -a Safari % <CR> <bar> ZQ <CR> <bar> execute '!rm %:p.html' <CR>
入画浅相思 2024-09-03 13:29:14

确保您的打印机支持打印 unicode 字符。尝试更新驱动程序并进入设置并打开用于打印的 truetype 字体或类似选项。据我所知,Courier 使用的是 ASCII。

输入 :h printencoding 会出现:

如果 'printencoding' 为空或者 VIM 找不到该文件,那么它将使用
'encoding'(如果 VIM 使用 |+multi_byte| 编译并且设置为 8 位
encoding) 来查找打印字符编码文件。如果VIM无法找到
字符编码文件,那么它将使用“latin1”打印字符
编码文件。
当'encoding'设置为多字节编码时,VIM会尝试转换
用于打印的打印编码的字符(如果“printencoding”为空
那么转换将是 latin1)。转换为打印编码
除了 latin1 之外,VIM 还需要使用 |+iconv| 进行编译。特征。
如果无法转换,则打印将失败。任何字符
无法转换将被替换为倒​​置的问号。
提供四种打印字符编码文件,支持默认Mac、VMS、
HPUX 和 EBCDIC 字符编码在这些上默认使用
平台。默认情况下使用代码页 1252 打印字符编码
Windows 和 OS/2 平台。

Make sure your printer supports printing unicode characters. Try updating your drivers and going into the settings and turning on truetype fonts for printing or a similar option. As far as I know, Courier uses ASCII.

Typing :h printencoding turns up:

If 'printencoding' is empty or VIM cannot find the file then it will use
'encoding' (if VIM is compiled with |+multi_byte| and it is set an 8-bit
encoding) to find the print character encoding file. If VIM is unable to find
a character encoding file then it will use the "latin1" print character
encoding file.
When 'encoding' is set to a multi-byte encoding, VIM will try to convert
characters to the printing encoding for printing (if 'printencoding' is empty
then the conversion will be to latin1). Conversion to a printing encoding
other than latin1 will require VIM to be compiled with the |+iconv| feature.
If no conversion is possible then printing will fail. Any characters that
cannot be converted will be replaced with upside down question marks.
Four print character encoding files are provided to support default Mac, VMS,
HPUX, and EBCDIC character encodings and are used by default on these
platforms. Code page 1252 print character encoding is used by default on
Windows and OS/2 platforms.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文