请告诉我,我已经伤透了脑筋……我有一个 java maven 项目,我需要将现有 pdf 文件的 RGB 颜色更改为灰色。偶然发现Ghostscript,安装它,通过命令行对其进行测试,它可以工作。包含在 pom 文件 ghost4j 中。我的方法:
private void ColorConversion(String newFileName, String directory) throws GhostscriptException {
//get Ghostscript instance
Ghostscript gs = Ghostscript.getInstance();
//prepare Ghostscript interpreter parameters
//refer to Ghostscript documentation for parameter usage
List<String> gsArgs = new ArrayList<String>();
gsArgs.add("-sDEVICE=pdfwrite");
gsArgs.add("-sProcessColorModel=DeviceGray");
gsArgs.add("-sColorConversionStrategy=Gray");
gsArgs.add("-dEncodeColorImages=false");
gsArgs.add("-sColorConversionStrategyForImages=Gray");
gsArgs.add("-o " + directory + File.separator + "output_cmyk.pdf");
gsArgs.add(newFileName);
//execute and exit interpreter
gs.initialize(gsArgs.toArray(new String[0]));
gs.exit();
我收到错误:java.lang.UnsatisfiedLinkError: Unable to load library 'gsdll64': Native library (win32-x86-64/gsdll64.dll) not found in resource path (D:\Education\javafx-maven-color\目标\类...等。
我怎么知道在哪里可以找到这个库?只是将库添加到目标不会退出,在 Maven 中进行清理时会删除该文件夹。
我也尝试使用以下命令运行:
gsArgs.add("-I c:\\Program Files\\gs\\fonts\\;c:\\Program Files\\gs\\lib\\;C:\\Program Files\\gs\\bin\\;");
零反应。(
UPD:为了测试,我写了这个字符串
Runtime.getRuntime().load(this.getClass().getResource("/org/example/gsdll64.dll").toString().replace("file:/", ""));
我在 JavaFX 上的应用程序和我的类使用接口任务。编写了以下代码:
try {
//execute and exit interpreter
synchronized (gs) {
gs.initialize(gsArgs.toArray(new String[0]));
gs.exit();
}
} catch (GhostscriptException e) {
throw e;
} finally {
//delete interpreter instance (safer)
try {
Ghostscript.deleteInstance();
} catch (GhostscriptException e) {
//nothing
}
}
但是在执行代码时,它会抛出一个错误:
“无效的内存访问”
日志:
0 [Thread-3] INFO org.ghost4j.Ghostscript - GPL Ghostscript 9.54.0 (2021-03-30)
2 [Thread-3] INFO org.ghost4j.Ghostscript - Copyright (C) 2021 Artifex Software, Inc. All rights reserved.
2 [Thread-3] INFO org.ghost4j.Ghostscript - This software is supplied under the GNU AGPLv3 and comes with NO WARRANTY:
2 [Thread-3] INFO org.ghost4j.Ghostscript - see the file COPYING for details.
61 [Thread-3] INFO org.ghost4j.Ghostscript - Processing pages 1 through 2.
61 [Thread-3] INFO org.ghost4j.Ghostscript - Page 1