0

我正在尝试使用 Ubuntu-11.10 上的 Batik SVG 工具包将 svg 图像转换为 pdf。我安装了 Batik 1.7 和 Fop 0.95。在终端中运行以下命令时:

java -jar /usr/java/share/batik-rasterizer.jar -m application/pdf /home/user/Batik_Test/colors.svg  
-scriptSecurityOff

我收到以下错误:

转换文件时出错:
  错误:无法访问应用程序/pdf 类型图像的转码器

我确实注意到的一件事是文件'pdf-transcoders.jar'不在机器上,所以我将它添加到/usr/share/java中,这是问题的机会,但这并没有什么不同。

如果有在 ubuntu 上使用 Batik 的经验,我将不胜感激。我错过了什么?

-J

4

2 回答 2

1

如果您在/usr/java/share/目录中有java可执行文件batik-rasterizer.jar ,则可以在同一路径 ( /usr/java/share/ )中创建一个名为lib的目录

所以有

/usr/java/share/lib

在这个最新的目录(lib)中,您将复制pdf-transcoder.jar以便拥有

/usr/java/share/lib/pdf-transcoder.jar

无论如何,除此之外,您还需要其他,因此,您最好复制蜡染二进制分发 zip 文件中包含的lib目录的全部内容

/usr/java/share/lib/

只有* content *,而不是lib,如果你想一次复制整个 lib,你需要输入

/usr/java/share/

于 2011-12-12T20:16:18.700 回答
0

如果您使用 .jar 文件从 fedora 执行 Batik,由于 java 忽略 -classpath 标志,这是非常痛苦的。我假设蜡染在 /usr/share/java 根据您的系统选择位置一种解决方案可能如下:创建一个临时目录(我假设您是超级用户,无论如何您总是可以使用 sudo 命令)

mkdir scratch
cd scratch
jar -xf /usr/share/java/batik-rasterizer.jar

这会将jar文件的内容输出到scratch,然后创建一个MANIFEST.MF文件或从转储中获取输出

cp META-INF/MANIFEST.MF .

现在编辑 MANIFEST.MF 文件(我喜欢使用 vi,任何人都使用他们喜欢的)

vi MANIFEST.MF

在 MANIFEST.MF 中添加一个 Class-Path: 行,例如:

Class-Path: batik-all.jar xmlgraphics-commons.jar xml-commons-apis-ext.jar pdf-transcoder.jar avalon-framework.jar avalon-framework-api.jar apache-commons-logging.jar apache-commons-io.jar

然后关闭文件并重新创建jar文件

jar cmf MANIFEST.MF /usr/share/java/batik-rasterizer.jar org/*

包括 batik 嵌套类的所有 jar

然后就可以使用了!

java -jar /usr/share/java/batik-rasterizer.jar -scriptSecurittyOff -m image/png -d image.png image.svg

例如,就是这样!

于 2014-10-08T13:15:45.020 回答