java - 无法使用 Ghost4J 加载库 'gs'

标签 java ghostscript ghost4j

我正在尝试使用 Ghost4J 将 PDF 转换为 PNG。我知道人们以前问过这个问题,但不是在 OS X 10 和最新版本的 Ghost4J 中。

我已按照此处 zippy1978 的回答中列出的说明进行操作:PDF to image using Java

我已经关注了 Ghost4J page 中的所有内容

我也尝试过这里的两个答案:How can i use ghost4j on OS X 10.9

我已经用 Port 安装了 Ghostscript并尝试过 Richard Koch's website .

我继续收到此错误:

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler processing failed; nested exception is java.lang.UnsatisfiedLinkError: Unable to load library 'gs': dlopen(libgs.dylib, 9): image not found] with root cause

java.lang.UnsatisfiedLinkError: Unable to load library 'gs': dlopen(libgs.dylib, 9): image not found
    at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:166)
    at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:239)
    at com.sun.jna.Library$Handler.<init>(Library.java:140)
    at com.sun.jna.Native.loadLibrary(Native.java:393)
    at com.sun.jna.Native.loadLibrary(Native.java:378)
    at org.ghost4j.GhostscriptLibraryLoader.loadLibrary(GhostscriptLibraryLoader.java:39)
    at org.ghost4j.GhostscriptLibrary.<clinit>(GhostscriptLibrary.java:34)
    at org.ghost4j.Ghostscript.initialize(Ghostscript.java:323)
    at org.ghost4j.renderer.SimpleRenderer.run(SimpleRenderer.java:105)
    at org.ghost4j.renderer.AbstractRemoteRenderer.render(AbstractRemoteRenderer.java:86)
    at org.ghost4j.renderer.AbstractRemoteRenderer.render(AbstractRemoteRenderer.java:70)
    at com.xxxx.yyyy.controller.rest.yyyyyController.zzzz(yyyyyController.java:182)

我在这里缺少什么?

来自我的 Controller 崩溃的代码是这样的(我标记了该行):
// imgSrc is the PDF in Base 64 and output file is a File

byte[] imageByte;
BASE64Decoder decoder = new BASE64Decoder();
imageByte = decoder.decodeBuffer(imgSrc);
outputfile = new File("image.pdf");
OutputStream fop = new FileOutputStream(outputfile);
fop.write(imageByte);
fop.flush();
fop.close();
PDFDocument document = new PDFDocument();
document.load(outputfile);
SimpleRenderer renderer = new SimpleRenderer();
renderer.setResolution(300);
List images = renderer.render(document);       //CRASH TAKES PLACE HERE ***
outputfile = new File("image.png");
ImageIO.write((RenderedImage) images.get(0), "png", outputfile);

最佳答案

所以我想通了!
我在这个 conversation 中找到了答案:

I had the same problem, although I had installed macports package "ghostscript" already. Setting LD_LIBRARY_PATH helped:

$ export LD_LIBRARY_PATH=/opt/local/lib


这导致了警告消息:
log4j:WARN No appenders could be found for logger (slideselector.facedata.FaceDataParser).
log4j:WARN Please initialize the log4j system properly.
这是在以下人员的帮助下解决的:How to initialize log4j properly?

For all maven guys like me: put the log4j.properties into src/main/resources

关于java - 无法使用 Ghost4J 加载库 'gs',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31996746/

相关文章:

java - 连接两个 PostScript 期间的 Ghost4j 类强制转换异常

java - 在桌面应用程序java中使用Ghost4j将PS转换为PDF

java - 安装scala出现错误

java - 从 REST 访问请求对象

pdf - 我们如何使用 ghostscript 将 2 个以上的 pdf 文件合并为单页(A4)PDF?

java - Ghost4J PDFConverter 生成 0KB PDF 文件

java - 学习 RESTful Web 服务之前有什么先决条件吗?

java - 使用 Java 阅读 MS Word 2007

php - 如何在 Linux 系统上用 PHP 启动后台进程并将用户 ajax 输入重复写入其标准输入

python - 将 Ghostscript 从 os.popen 转换为 subsession.popen python