[英]Using openoffice draw with Java to convert emf/wmf to png
[英]Need to convert EMF to jpeg,png file formats using java
我需要使用完整的 Java 代碼將 emf、wmf 文件格式轉換為 png 或 jpeg(因為某些瀏覽器不支持這些格式)。任何人都可以指導我。
提前致謝
最快的方法可能是使用Imagemagick 。 它確實支持EMF 和 WMF 格式。 我已經使用im4java成功地使用了 Java 中的 Imagemagick ,它是 Imagemagick 的 Java 接口。
或者,您可以查看Jmagick ,這是 Imagemagick 的另一個 Java 接口。 我發現這個使用起來更復雜。
其他選項: FreeHEP和Apache Batik 。 不過我沒試過。
純 Java 解決方案是 TwelveMonkeys 與 Batik 支持讀取 WMF 文件。
Batik 只能處理帶有 Aldus Placable Header 的舊 WMF,無法解析某些其他類型(最近在 MS Office 元數據中)。 參見 WMF 格式: http : //wvware.sourceforge.net/caolan/ora-wmf.html
提供的解決方法: https : //github.com/haraldk/TwelveMonkeys/issues/35用“假”Aldus Placable Header 包裝最近的 WMF,然后傳遞給 Batik。
否則,ImageMagick (IM) 是帶有安裝程序的簡單解決方案。 順便說一句,即使使用最近的 IM,WMF 也無法在 Linux 中正確轉換(返回黑色圖像)。
快速調查顯示以下命令行實用程序:http ://www.verypdf.com/htmltools/html-converter/emf-to-bmp.html
你可以從java程序運行它。 不幸的是,我還沒有看到純 Java 解決方案。 會很高興知道是否存在。
import org.im4java.core.ConvertCmd;
import org.im4java.core.IM4JavaException;
import org.im4java.core.IMOperation;
import org.im4java.process.ProcessStarter;
import java.io.File;
import java.io.IOException;
public class converter {
public static void main(String arg[]) throws InterruptedException, IOException, IM4JavaException {
String myPath="C:\\Program Files\\ImageMagick-7.0.10-Q16-HDRI";
ProcessStarter.setGlobalSearchPath(myPath);
String input="C:\\Users\\Bagra\\Desktop\\emf files\\two.emf";
String output="C:\\Users\\Bagra\\Desktop\\emf files\\out2.jpg";
convert(input,output);
}
public static void convert(String input,String output)
{
try{
IMOperation img=new IMOperation();
img.addImage();
img.addImage();
ConvertCmd convert=new ConvertCmd()`enter code here`;
convert.run(img,new Object[]{input,output});
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
如果您使用的是 Windows,您必須做的第一件事是訪問https://imagemagick.org/script/download.php並下載 ImageMagick-7.0.10-22-Q16-HDRI-x64-dll.exe。 但是當您看到安裝選項時要小心,您必須選擇安裝遺留實用程序(例如轉換)。(這非常重要)。 安裝后,只需使用 java 創建一個簡單的控制台應用程序。
String myPath="C:\\Program Files\\ImageMagick-7.0.10-Q16-HDRI";
ProcessStarter.setGlobalSearchPath(myPath);
您必須將搜索路徑設置為安裝目錄。 然后選擇一個 emf 文件和不存在的 jpg 路徑。 有關更多詳細信息,您可以關注http://im4java.sourceforge.net/docs/dev-guide.html 。 我花了很多時間來弄清楚。 我希望它可以幫助任何需要這樣的人。 祝你好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.