使用UTF8编码将文本转换为PDF(替代a2ps)

17

a2ps程序不支持utf-8编码,至少我的版本只支持拉丁-X编码:

a2ps --list=encoding

版本:

GNU a2ps 4.14

我该如何将简单的UTF-8文本转换为Postscript或PDF文件?


2
请参考unix.stackexchange.com上的此讨论,该讨论除了paps还描述了u2ps。 - Maxim
7个回答

13
如果你需要使用 a2ps 或者 enscript(这是一个类似的工具),并且你只需要将它们与一些 UTF-8 文档一起使用,那么你只需将文档转换为 ISO-8859-1 或者其他支持的编码格式。有许多工具可以实现这一点。例如,下面是使用 enscript 的工作流程(但你也可以用同样的方法来使用 a2ps):
cat document.txt | iconv -c -f utf-8 -t ISO-8859-1 | enscript -o document.ps

但是在转换过程中,由于这些编码的范围比UTF-8小,因此您可能会失去一些字符。

另一方面,如果需要使用UTF-8,则可能需要寻找一些最近的工具来将UTF-8转换为PDF。我自己编写了一个名为txt2pdf的Python程序;您可以在这里找到它。还要查看诸如pandocgimlirst2pdfwkhtmltopdf等工具。


1
使用iso-8859-1//TRANSLIT而不是普通的iso-8859-1可能会避免一些iconv: illegal input sequence at position XX错误。 - Skippy le Grand Gourou
txt2pdf似乎会将所有UTF-8字符(不是ASCII字符)转换为小黑方块。 - Roger House
@ThomasBaruchel 我正在使用 /usr/share/fonts/truetype/ubuntu-font-family/UbuntuMono-R.ttf,但结果大部分都是空白方框。可能我应该找另一种字体,但我不知道哪种适合。当我使用 cat 显示文本文件或在 vim 或 emacs(终端版本)中查看时,一切都很好,但我还没有找到成功将其转换为 PDF 的方法。 - Roger House
@ThomasBaruchel 我应该提到,我的文本文档大多是Unicode字符,而不是纯ASCII。 - Roger House
@RogerHouse,我检查了这个字体,并没有注意到任何问题。当然,该工具旨在与UTF8字符一起使用,如果字形在字体中,则不应有任何问题。我们必须理解出了什么问题,但肯定没有什么是不能很快修复的。你能否在Github上开一个问题,以便更方便地讨论? - Thomas Baruchel
显示剩余3条评论

3
你可以使用Vim。在正常模式下打开文件并执行命令:hardcopy > output.ps。你也可以直接从shell中执行此操作。执行
$ vim -c ":hardcopy > output.ps" -c ":quit" input.txt

在你的 shell 中打开 Vim,生成 output.ps,然后关闭 Vim。


这是一个很好的回答 - vim 在大多数系统上默认安装,因此它可以直接使用。当然,也可以使用 nvim 来完成这项任务。在阅读这个答案之前,我不断地安装一种工具又一种工具。;-) - Rob Bar
谢谢,这是一个很好的答案 - vim 在许多系统上默认安装。在阅读这个答案之前,我一直在安装一个又一个工具。顺便说一下:在neovim 0.9中,:hardcopy选项已被删除,建议使用:TOhtml选项,然后将生成的HTML文件转换为PDF。 - Rob Bar

3
使用paps!例如,我按照以下方式使用它:
paps --font="Monospace 10" input.txt > output.ps  

我对UTF编码没有任何问题。 如果您需要PDF文件,则

pdf2ps output.ps 

请注意,v0.7+ 可能更受欢迎。 - xebeche

2

请提供链接中的必要细节,因为链接可能在未来失效。 - Abhishek Gurjar

2

1
如果文本文件很小,paps会将其转换为ps格式,然后可以将其输入到ps2pdf中。问题在于,paps生成的ps文件会导致ps2pdf创建一个非常大的pdf文件。如果这没关系,那么这是可能的。目前,我从paps得到了一个很大的pdf文件。

1
我是paps的作者。在版本0.7.*中,ps2pdf产生的大文件问题已经不存在了。此外,版本0.7.*可以直接编写pdf文件,因此您不再需要使用ps2pdf。请从git存储库获取最新版本。 - Dov Grobgeld
1
@DovGrobgeld,这正是从主机仿真器发送到现代打印机的行式打印输出所需之物!谢谢! - Leo B.

0

有一个基于 GNOME 库的实用程序,名为 gnome-u2ps。它的功能比 a2ps 少,并且似乎已经不再维护。


我多年前尝试过这个工具;我不知道它现在的转换引擎是否更好,但那时我发现结果很糟糕。如果我没记错的话,TrueType字体的轮廓被转换了,但是hinting却丢失了。虽然它可能适用于打印输出,但肯定不能成为创建独立PDF文档的可接受解决方案。 - Thomas Baruchel
它似乎不再维护(它依赖于像 gnomeprint 这样的过时库)。 - bortzmeyer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接