You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

虚拟打印机项目:PS文件转含俄文TXT遇Unicode问题求助

解决PS文件含俄文时ps2ascii转换TXT乱码的问题

我之前处理多语言PS文件转换时也踩过ps2ascii的坑,它对非拉丁字符的Unicode支持确实有限,给你几个经过验证的解决办法:

方法1:先转PDF再用pdftotext提取文本

既然你已经能用ps2pdf正常生成包含俄文的PDF,那可以借助pdftotext(poppler工具集的一部分)来提取UTF-8编码的文本,它对多语言字符支持更友好:

  1. 先用ps2pdf生成PDF:
    ps2pdf input.ps input.pdf
    
  2. 再用pdftotext指定UTF-8编码提取文本:
    pdftotext -enc UTF-8 input.pdf output.txt
    
    这个方法的优势是利用你已经验证过的PDF转换流程,避免直接处理PS的字体映射问题。

方法2:用Ghostscript的txtwrite设备直接转换

Ghostscript自带的txtwrite设备专门针对Unicode文本输出优化,比ps2ascii的兼容性强很多,直接用它处理PS文件:

gs -dNOPAUSE -dBATCH -sDEVICE=txtwrite -sOutputFile=output.txt -sTextEncoding=UTF-8 input.ps
  • -sTextEncoding=UTF-8强制输出UTF-8编码,确保俄文字符被正确编码
  • 如果你的PS文件里俄文字体是自定义的,可以加上-sFONTPATH=/path/to/your/fonts指定字体路径,让Ghostscript能找到对应字符映射

方法3:检查并修复PS文件的字体嵌入

如果以上方法还是有问题,大概率是PS文件里的俄文字体没有嵌入,导致转换工具无法解析字符:

  1. 先用Ghostscript检查PS文件中的字体:
    gs -dNOPAUSE -dBATCH -c "input.ps (r) file runpdfbegin {/Font findresource /FontName get ==} forall quit"
    
  2. 输出结果里如果看到俄文字体是外部引用(比如没有/Embedded标记),需要将对应的字体文件放到Ghostscript的默认字体目录(通常是/usr/share/ghostscript/fonts/或Windows下的C:\Program Files\gs\gsX.X.X\fonts\),再重新转换。

额外注意事项

  • 转换完成后,用支持UTF-8的文本编辑器(比如Notepad++、VS Code)打开TXT文件,确保编辑器编码设置为UTF-8,避免因为编码不匹配导致的“假乱码”。

内容的提问来源于stack exchange,提问作者ant_dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:26:40