我正在尝试使用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
我收到以下错误:
转换文件时出错:
错误:无法访问application / pdf类型图像的代码转换器
我注意到的一件事是文件'pdf-transcoders.jar'不在机器上,所以我把它添加到/ usr / share / java上的机会就是问题,但没有什么区别。
我将非常感谢那些在ubuntu上使用Batik的经验。我错过了什么?
-J
答案 0 :(得分:1)
如果 / usr / java / share / 目录中有 java 可执行文件 batik-rasterizer.jar ,则可以创建目录在同一路径中命名 lib ( / usr / java / share / )
所以
<强>的/ usr /爪哇/共享/ lib中强>
在最新的目录( lib )中,您将复制 pdf-transcoder.jar 以便
<强> /usr/java/share/lib/pdf-transcoder.jar 强>
无论如何,除此之外你还需要其他 libs ,因此,对你来说更好,复制 lib 的整个内容 batik二进制分发zip文件中包含的目录
到
<强>的/ usr / JAVA /共享/ LIB / 强>
仅 * 内容 * ,而非 lib ,如果您想立即复制整个lib ,需要投入
<强>的/ usr / JAVA /共享/ 强>
答案 1 :(得分:0)
如果你使用.jar文件从fedora执行Batik,由于java忽略-classpath标志,这是非常痛苦的。我假设在/ usr / share / java中的蜡染根据你的系统选择位置一个解决方案可能如下:创建一个临时目录(我假设你是超级用户,无论如何你总是可以sudo命令)
mkdir scratch
cd scratch
jar -xf /usr/share/java/batik-rasterizer.jar
这将jar文件的内容输出到临时,然后创建一个MANIFEST.MF文件或从转储中获取输出
cp META-INF/MANIFEST.MF .
现在编辑MANIFEST.MF文件(我喜欢使用vi,任何人都使用他们喜欢的文件)
vi MANIFEST.MF
将一个Class-Path:行添加到MANIFEST.MF中,例如:
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/*
包含蜡染具有嵌套类的所有jar
然后你可以使用它!
java -jar /usr/share/java/batik-rasterizer.jar -scriptSecurittyOff -m image/png -d image.png image.svg
例如,那就是它!