使用Ghostscript的zugferd.ps时触发Unrecoverable error: rangecheck in .putdeviceprops错误
使用Ghostscript的zugferd.ps时触发Unrecoverable error: rangecheck in .putdeviceprops错误
我之前处理ZUGFeRD格式转换时也碰到过一模一样的错误,大概率是你命令行里的参数配置搞混了,咱们一步步来排查解决:
首先看你命令里的这个参数:
-sZUGFeRDProfile=/Users/myname/Documents/einvoicing/AdobeRGB1998.icc
这就是问题核心!ZUGFeRDProfile参数是用来指定ZUGFeRD的业务配置文件标识(比如对应你设置的BASIC合规级别的profile),而不是用来指定色彩ICC文件的。你把色彩配置文件的路径塞到这里,Ghostscript完全识别不了,直接触发了参数范围错误。
接下来给你修正方案:
1. 纠正核心参数错误
把错误的ZUGFeRDProfile参数替换成对应合规级别的标识,因为你设置的是BASIC级别,这里直接写BASIC就行。如果要指定色彩ICC配置,改用专门的-sOutputICCProfile参数指向你的AdobeRGB1998.icc文件。
2. 清理命令行的无效空格
你的命令里-o /Users/myname/Documents/einvoicing/zugferd.pdf \ 这一行末尾有个多余的空格,会导致路径解析异常,记得去掉这个空格。
3. 修正后的完整命令
gs --permit-file-read=/Users/myname/Documents/einvoicing/ -sPDFACompatibilityPolicy=1 \ -sDEVICE=pdfwrite -dPDFA=3 -sColorConversionStrategy=RGB \ -sOutputICCProfile=/Users/myname/Documents/einvoicing/AdobeRGB1998.icc \ -sZUGFeRDXMLFile=/Users/myname/Documents/einvoicing/invoice.xml \ -sZUGFeRDProfile=BASIC \ -sZUGFeRDVersion=2p1 -sZUGFeRDConformanceLevel=BASIC \ -o /Users/myname/Documents/einvoicing/zugferd.pdf \ /Users/myname/Documents/einvoicing/zugferd.ps /Users/myname/Documents/einvoicing/simple_pdf.pdf
额外排查点
如果修正后还是报错,你可以再检查这几点:
- 确认你用的
zugferd.ps脚本和当前Ghostscript版本匹配,不同版本的脚本参数逻辑可能有差异; - 验证你的
invoice.xml文件格式完全符合ZUGFeRD 2.1 BASIC的规范,有没有XML语法错误; - 确保所有文件路径都没有拼写错误,Ghostscript对这些路径有读取权限。
备注:内容来源于stack exchange,提问作者crodev
相关产品推荐
相关产品推荐

