如何使用 utf-8 将 txt 转换为 pdf?



我使用以下命令将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 <<< ℃

上述命令会导致输出文件中â204203

我看到讨论说enscript不支持utf-8。似乎有几种替代方案可以将 txt 转换为 pdf。但目前尚不清楚哪一个最强大、最方便使用。有谁知道这个问题的最佳解决方案?

(将此作为编程问题处理,而不是请求软件推荐,这将是题外话(。

你不能使用 UTF-8,或者至少不能简单地使用。PostScript 根本不直接支持 UTF-8。然而。。。。

由于PostScript是一种编程语言,你可以编写一个程序来检查UTF-8序列的第一个字节,看看它是一个字符代码,还是一个指示更多字节的代码。实质上是撤消编码以生成 Unicode 代码点。

从那里,使用字形名称和 Unicode 代码点的列表,您可以创建具有自定义编码的字体,而不是将 UTF-8 写入 PostScript 程序,而是编写单字节,该字节通过编码将字符代码映射到相关的字形名称。

或者,您可以定义一个 CIDFont,然后创建一个 CMap,它将 UTF-8 的可变长度字节序列映射到 CID,以引用字体中的正确字形。IIRC已经有UTF-16 CMaps,事实上Adobe在这里提供了其中的一些,其中还包括各种CJKV语言的UTF-16和UTF-32版本。

请注意,虽然这些方法将生成正确呈现的PostScript,然后可用于创建正确显示的PDF文件,但无法复制/搜索生成的PDF文件。

为了搜索PDF文件,字体必须具有关联的ToUnicode CMap,这是一个仅限PDF的结构,它不存在于PostScript中,也没有PostScript等效项。因此,无法将这些信息嵌入PostScript程序中,这意味着它不能嵌入到PDF文件中。

相关内容

  • 没有找到相关文章

最新更新