我使用以下命令将txt转换为ps。然后将ps转换为pdf。
enscript --header='Page $% of $=' --word-wrap -o output.ps 2>/dev/null < input.txt但它不适用于utf-8输入。
enscript --header='Page $% of $=' --word-wrap -o output.ps 2>/dev/null <<< ℃上面的命令在输出文件中生成â\204\203。
我看到有讨论说enscript不支持utf-8。似乎有几种方法可以将txt转换为pdf。但目前还不清楚哪一个是最健壮和最方便使用的。有没有人知道这个问题的最佳解决方案?
发布于 2019-08-11 16:47:27
将此作为编程问题来处理,而不是请求软件推荐(这将是离题的)。
您不能使用UTF-8,或者至少不能简单地使用它。PostScript根本不直接支持UTF-8。然而……
由于PostScript是一种编程语言,您可以编写一个程序来检查UTF-8序列的第一个字节,看看它是字符码,还是表示更多字节的码。本质上是取消编码以生成Unicode代码点。
在此基础上,使用字形名称和Unicode代码点的列表,您可以创建具有自定义编码的字体,而不是将UTF-8写入PostScript程序,而是编写单个字节,它通过编码将字符代码映射到相关的字形名称。
或者,您可以定义一个CIDFont,然后创建一个CMap,它将UTF-8的可变长度字节序列映射到CID中,以引用字体中的正确字形。IIRC现在已经有了UTF-16cjkv,事实上,Adobe已经提供了一些UTF-16和UTF-32版本的here,它还包括用于各种CMaps语言的UTF-16和UTF-32版本。
请注意,虽然这些方法将生成正确呈现的PostScript,然后可用于创建正确显示的PDF文件,但无法复制/搜索生成的PDF文件。
为了搜索PDF文件,字体必须具有关联的ToUnicode CMap,这是一个仅用于PDF的结构,它在PostScript中不存在,并且没有PostScript等效项。因此,无法将这些信息嵌入到PostScript程序中,这意味着它无法嵌入到PDF文件中。
https://stackoverflow.com/questions/57447046
复制相似问题