Ghost4J/Ghostscript - 尝试将字体嵌入 PDF 时出现错误 100
Posted
技术标签:
【中文标题】Ghost4J/Ghostscript - 尝试将字体嵌入 PDF 时出现错误 100【英文标题】:Ghost4J/Ghostscript - Getting error 100 when trying to embed fonts into PDF 【发布时间】:2012-04-23 16:30:06 【问题描述】:我有带有引用字体的 PDF,我想使用 Ghost4J 输出包含嵌入字体的 PDF。
public void execute()
Ghostscript gs = Ghostscript.getInstance();
String[] cmdStr=
"-dNOPAUSE","-dBATCH","-dCompatibilityLevel=1.4",
"-dPDFSETTINGS=/prepress","-dSAFER","-dNOPLATFONTS",
"-sDEVICE=display","-sPAPERSIZE=letter",
"-I","C:\\WINNT\\Fonts\\;C:\\Program Files\\gs\\gs9.05\\lib\\;C:\\Program Files\\gs\\gs9.05\\bin\\;",
"-dSubsetFonts=true","-dEmbedAllFonts=true",
"-sFONTPATH=C:\\WINNT\\Fonts", "-sOutputFile=",
outputPath,"-c",".setpdfwrite", "-f",inputPath
;
try
gs.initialize(cmdStr);
gs.exit();
catch (GhostscriptException e)
System.out.println("ERROR: " + e.getMessage());
e.printStackTrace();
运行任何 PDF 时都会出现以下错误:
ERROR: Cannot initialize Ghostscript interpreter. Error code is -100
在命令行上运行时,参数正常工作。
gswin32c.exe -dNOPAUSE -dBATCH -dCompatibilityLevel=1.4 -dPDFSETTINGS=/prepress -dSafer -NOPLATFONTS -sDEVICE=pdfwrite -sPAPERSIZE=letter -dSubsetFonts=true -dEmbedAllFonts=true -sFONTPATH=C:\\WINNT\\Fonts -sOutputFile=c:\out.pdf -f c:\test.pdf
跟进:
GhostScript 有权写入 C:。 我删除了除 outputPath、“-f”、inputPath 之外的所有开关,但仍然出现错误 在 inputPath 之后删除了 cmdStr 末尾的逗号注意事项:
我正在处理回调【问题讨论】:
我对 Ghost4J 一无所知,但是.... 这些参数-ps2pdf
和 -psconv
对于 Ghostscript 命令行我来说并不熟悉。另外,在您的代码示例的 cmdStr...
Ghost4J 只是 C++ Ghostscript 代码的 Java 包装器。 ghost4j.sourceforge.net
我猜的太多了...但是您确定从 Java 代码调用 Ghostscript 的方式正确吗?
您需要做的第一件事是捕获 Ghostscript 返回的反向通道信息。我不知道你会如何在 Ghost4J 中做到这一点,但你绝对需要它。这可能会告诉您出了什么问题。我的猜测是输出文件,你确定你有权限写入 C: 的根目录吗?如果我对此进行调查,我会首先将参数数量减少到最低限度。前面关于不熟悉的参数的评论是非常正确的,这些不是正常的 GS 参数并且(在 GS 的正常构建中)不会做任何事情。
嗨@eabraham,你得到这个查询的答案了吗?我也有同样的问题。幽灵脚本的新手:)
【参考方案1】:
您的 inputPath 变量后面有一个逗号。这是无效的 Java 语法。
我在生产 Java 应用程序中使用 ghostscript 从 PDF 生成 PCL 文件。我使用 java.lang.Runtime 类来执行 Ghostscript 可执行文件,所以我不能直接为 Ghost4J 提供建议。
我怀疑问题在于 api 不知道支持文件的位置。尝试传递字体、lib 和 bin 位置的完整路径,如下所示。
"-Ic:\Program Files (x86)\gs\fonts\;c:\Program Files (x86)\gs\lib\;c:\Program Files (x86)\gs\bin\;"
【讨论】:
您对逗号的看法是对的,但我仍然收到错误消息。以上是关于Ghost4J/Ghostscript - 尝试将字体嵌入 PDF 时出现错误 100的主要内容,如果未能解决你的问题,请参考以下文章