• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: (slightly-ot): Problem with ImageMagick and Runtime.exec
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: (slightly-ot): Problem with ImageMagick and Runtime.exec


  • Subject: Re: (slightly-ot): Problem with ImageMagick and Runtime.exec
  • From: email@hidden
  • Date: Tue, 24 Jan 2006 14:49:04 -0700


Ralph wrote on 01/24/2006 12:19:13 PM:

> in my WO application, I use ImageMagick's "identify" command line
> tool to get various properties of image files. 

>
> However, in order to get the properties of EPS files, ImageMagick's
> "identify" uses ghostscript (calls gs), which I have downloaded and
> installed separately. 

>
> "identify" also works nicely and seemlessly with the command line on
> EPS files exactly the same way it would work with JPEGs etc. 


We use imagemagick + ghostscript to convert some pdfs into tiffs. I didn't write this code, but I remember the developer working through it and figuring out everything necessary to get it to work. We had to go through some additional hoops to get ghostscript to recognize a certain version of a font we needed, but this code lets us use imagemagick+ghostscript on both Windows and Solaris (I may have snipped a few bits to hide certain non-public data):

                        String tmpdir = NSProperties.getProperty("tmpdir");
                        String command = NSProperties.getProperty("convertPath"); // path to convert executable
                        String execPath = NSProperties.getProperty("runtimeExecPath");
                        String platform = System.getProperty("os.name");
                        log.info("I'm running on: "+platform);
                        String[] vars = new String[5];
                        if(platform.indexOf("Win") != -1)
                        {
                                vars[0] ="";
                                vars[1] ="";
                                vars[2] ="";
                                vars[3] ="";
                                vars[4] ="";
                        }
                        else
                        {
                                vars[0] = "PATH=$PATH:"+NSProperties.getProperty("runtimeExecPath");
                                vars[1] = "LD_LIBRARY_PATH="+NSProperties.getProperty("ld_library_path");
                                vars[2] = "MAGICK_HOME="+NSProperties.getProperty("magick_home");
                                vars[3] = "GS_FONTPATH="+NSProperties.getProperty("gs_fontpath");
                                vars[4] = "GS_LIB="+NSProperties.getProperty("gs_lib");
                        }
                        File f = new File(tmpdir+filename);
                        FileOutputStream fout = new FileOutputStream(f);
                        JasperExportManager.exportReportToPdfStream(jasperPrint, fout);
                        fout.flush();
                        fout.close();
                        //convert -density 144 PDF:test.pdf -monochrome -compress Fax TIFF:test.tiff
                        String[] commands = new String[8];
                        commands[0] = command;
                        commands[1] = "-density";
                        commands[2] = "200";
                        commands[3] = tmpdir+filename;
                        commands[4] = "-monochrome";
                        commands[5] = "-compress";
                        commands[6] = "Fax";
                        commands[7] = tmpdir+filename.replaceAll(".pdf", ".tiff");
                        //ok, we wrote the pdf.. now see if we can convert it to tiff...
                        log.info("Starting the pdf->tiff conversion:");
                        log.info("Command: ");
                        for(int i=0; i<commands.length; i++)
                        {
                                log.info(commands[i]);
                        }
                        log.info("Environment:");
                        for(int i=0; i<vars.length; i++)
                        {
                                log.info(vars[i]);
                        }
                        Process p = Runtime.getRuntime().exec(commands, vars);
                        BufferedReader b = new BufferedReader(new InputStreamReader(p.getInputStream()));
                        BufferedReader err = new BufferedReader(new InputStreamReader(p.getErrorStream()));
                        p.waitFor();
                        while (b.ready())
                        {
                                log.info(b.readLine());
                        }
                        while (err.ready())
                        {
                                log.error(err.readLine());
                        }
                        int retVal = p.exitValue();
                        log.info("pdf converter retval = " + retVal);

Hope it helps.

Logan
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

References: 
 >(slightly-ot): Problem with ImageMagick and Runtime.exec (From: Ralph Scheuer <email@hidden>)

  • Prev by Date: Re: (slightly-ot): Problem with ImageMagick and Runtime.exec
  • Next by Date: Summing up again the deploy build issue
  • Previous by thread: Re: (slightly-ot): Problem with ImageMagick and Runtime.exec
  • Next by thread: Summing up again the deploy build issue
  • Index(es):
    • Date
    • Thread