我使用Ghost4j来呈现PDF,但有时当尝试呈现MS创建的文档时,它会引发以下类型的错误
[main] ERROR org.ghost4j.Ghostscript - GPL Ghostscript 9.18: Some glyphs of the font TimesNewRoman requires a patented True Type interpreter.根据这条线的说法,这可能是由于Ubuntu包遗漏了某些字体。因此,我从源代码编译了最新的Ghostscript (9.22)并安装了它,现在它是我使用gs命令时出现的版本,但是Ghost4j似乎仍然在使用旧的9.18版本。
我如何告诉它使用新版本的Ghostscript?
发布于 2018-01-23 10:33:15
Ghost4j本身并不使用幽灵脚本安装,相反,ghost4j和ghostscript都使用一个名为libgs.so的库。这个库依赖于幽灵脚本,但也附带了一个名为libgs-dev的安装(在Linux上)。我怀疑Ghost4j在某种程度上使用了这个库的左端版本。因此,如果您正在使用最新版本的Ubuntu安装libgs-dev,那么所有当前稳定版本的Linux默认为9.18,我们通过手动构建库并将所需版本与libgs.so文件进行符号链接解决了这个问题。您可以下载编译后的libgs.so 这里(个人dropbox链接) 9.22版本,并在/usr/lib/x86_64-linux-gnu/libgs.so.9.22下保存并运行。
ln -fs /usr/lib/x86_64-linux-gnu/libgs.so.9.22
/usr/lib/x86_64-linux-gnu/libgs.so而且,如果你不像在互联网上信任陌生人一样,你不应该这样做:(建造一般事务人员教程),(gs源代码)。为了确保其他一切都相同,我们使用了Ghost4j 1.0.1和JNA4.1.0
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>org.ghost4j</groupId>
<artifactId>ghost4j</artifactId>
<version>1.0.1</version>
</dependency>在解决这个问题时,我发现这个端点方法非常有用:
@RequestMapping(value = "/gs/version", method = GET)
public GhostscriptRevision gsVersion() throws IOException {
return Ghostscript.getRevision();
}祝好运。
https://stackoverflow.com/questions/46947105
复制相似问题