【问题标题】:EPS to SVG Conversion for PDF output用于 PDF 输出的 EPS 到 SVG 转换
【发布时间】:2014-05-04 09:23:11
【问题描述】:

我将所有 eps 文件作为输入,这些 eps 文件存在于我的 xml 文件中。

<?xml>
<FIGURE>
    <L-GRAPHIC L="DE">
        <GRAPHIC FILENAME="abc.eps">
        </GRAPHIC>
    </L-GRAPHIC>
</FIGURE>
</xml>

Java 代码使用 ImageMagick

public static void main(String[] args) {
    String inputfileName = "C:\\abc.eps"; 

    try {
        System.out.println("Started" + inputfileName);
        ImageInfo info = new ImageInfo(inputfileName);

        MagickImage magick_converter = new MagickImage(info);

        String outputfile = "C:\\abc.svg"; // Output File name
        magick_converter.setFileName(outputfile);

        magick_converter.writeImage(info);
        System.out.println("Complete");

    } catch (MagickException e1) {          
        e1.printStackTrace();
    } 
}

上面代码的当前输出:

Started

在那之后什么都没有发生。

请帮忙。

【问题讨论】:

    标签: java svg imagemagick apache-fop eps


    【解决方案1】:

    免责声明

    ImageMagick 解决方案不创建矢量输出,而是创建像素文件格式。虽然它可能会解决问题。我发现,从 eps 创建 svg 图像的唯一开源方法是下面简要提到的 Inkscape 方法。

    编辑:@Chai 自己找到了解决方案,请参阅本页其他地方。

    手动预处理

    使用开源实用软件ImageMagick,您可以轻松地从一种图像格式转换为另一种图像格式。以最简单的形式做:

    convert image.eps image.png
    

    通过使用开关,您还可以调整质量和许多其他功能。

    使用开源绘图软件Inkscape,您可以手动进行相同的操作。只需打开 eps 图像并将其保存为 svg 图像文件。

    程序化过程

    这是使用 java 解决此问题的一种方法。该解决方案基于im4java ImageMagick 包装器。在我的情况下,不需要将我的 ImageMagick 安装连接到 java 库,但如果是这样的话;如何在他们的网站上提及。

    import java.io.IOException;
    import org.im4java.core.ConvertCmd;
    import org.im4java.core.IM4JavaException;
    import org.im4java.core.IMOperation;
    
    public static void main(String[] args) throws IOException, InterruptedException, IM4JavaException {
        ConvertCmd convertCmd = new ConvertCmd();
    
        IMOperation imOperation = new IMOperation();
    
        imOperation.addImage("/home/user/images/image.eps");
        imOperation.addImage("/home/user/images/image.png");
    
        convertCmd.run(imOperation);
    }
    

    如果您使用的是 maven,则为 pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>lab</groupId>
        <artifactId>imagemagick</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    
        <dependencies>
            <dependency>
                <groupId>org.im4java</groupId>
                <artifactId>im4java</artifactId>
                <version>1.4.0</version>
            </dependency>
        </dependencies>
    </project>
    

    【讨论】:

    • 嗨。谢谢您的帮助。我使用了 ImageMagick。请参阅我上面的代码。我尝试执行我的 java 类。但什么也没有发生。请帮忙。
    • 嗨..我执行了你的代码。我收到此错误:“无效参数 - abc.svg”。我想我应该告诉你背景。这整件事是必需的,因为 Apache FOP 不支持 pdf 输出中的 eps 文件。我的 FOP(xml 输入)的输入有“FIGURE”标签,它们都是 eps 文件,因此在解析 xml 并将输出发送到 pdf 之前,我需要将 eps 转换为 svg。我正在使用 xslt 来设置每个标签的样式并将其发送到 pdf。我在java中进行转换的方法是否正确?有没有更好的办法?请帮忙。
    • 你得到的文件名是机器中存在的绝对路径还是可以通过网络访问?我已经使用图像文件的 url 而不是磁盘上的绝对文件路径测试了上面的代码,它可以工作。我以前和你在同一条轨道上,我的计划是事先进行一些程序化转换。请记住,您的结果文件必须可供 fop 进程访问。
    • 嗨..我的本地目录中有文件。我正在使用 Eclipse IDE。我已经安装了 jre6 32 位。 Im4java 1.4 罐子。还安装了 ImageMagick。我在这里有什么遗漏吗?它仍然是同样的错误。 :(
    • 我认为问题在于设置环境变量。我添加了以下语句: String myPath="C:\\ImageMagick\\im4java-1.4.0\\bin"; ProcessStarter.setGlobalSearchPath(myPath);它正在尝试搜索转换命令,我收到“org.im4java.core.CommandException: java.io.FileNotFoundException: convert”错误。
    【解决方案2】:

    我已经找到了合适的解决方案。我使用 pstoedit.exe 和 ghostscript 在我的 java 代码中将 eps 文件转换为 svg 格式。 谢谢。

    【讨论】:

    • 非常好,我也会用这个。 pstoedit 转换器也可以通过流行的 Linux 打包工具获得,如 apt-get、yum 等。我刚试了一下,它进行了漂亮的转换,保持透明度,文件占用空间更小。
    猜你喜欢
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    相关资源
    最近更新 更多