aspose是专门做文件解析的,目前支持100多种主流文件的。相对使用起来还是比较方便的。唯一有点小遗憾的是aspose不是开源免费的,试用版解析出来的文件都带有水印。
这里我用到的是将.ai文件和.cdr文件转成png。费话不多说,直接上使用方法。
.ai文件转png格式:
1. 首先在官网上下载对应的jar包。(aspose-psd-xxx-java )
下载地址:https://downloads.aspose.com/psd/java ;
2. 下载完成后解压,将lib下的jar放到项目中引用,也可以用maven将jar包打成依赖存放在本地仓库。
命令方法:mvn install:install-file -Dfile=jar包在磁盘的路径 -DgroupId=groupId名称 -DartifactId=包名称 -Dversion=版本号 -Dpackaging=jar
3. 完成以上步骤即可使用jar包来解析文件了。
public static void main(String[] args) {
String sourceFileName = "文件路径/ceshi3.ai";
String outFileName = "文件路径/34992OStroke.png";
// AiImage就是将目标文件转为指定文件的类.
// load()方法可以加载的是路径也可以是流.
AiImage image = (AiImage)Image.load(sourceFileName);
// 设置一些转png的格式参数(比如图片宽高)
PngOptions options = new PngOptions();
options.setColorType(PngColorType.TruecolorWithAlpha);
// save()方法是保存图片.
image.save(outFileName, options);
// 也可以以流的方式保存,需要创建一个OutputStream来接收内容.
// ByteArrayOutputStream outStream = new ByteArrayOutputStream();
// image.save(outStream, options);
}
.cdr文件转png格式:
1. 和.ai类似首先在官网上下载对应的jar包。(aspose-imaging-xxx)
下载地址:https://downloads.aspose.com/imaging/java ;
2. 和上面第二步方式一样。
3. 然后就可以操作jar来解析文件。
public static void main(String[] args) {
String sourceFileName = "文件路径/SimpleShapes.cdr";
String outFileName = "文件路径/SimpleShapes.png";
// AiImage就是将目标文件转为指定文件的类.
// load()方法可以加载的是路径也可以是流.
Image image = Image.load(sourceFileName);
// 设置一些转png的格式参数(比如图片宽高)
PngOptions options = new PngOptions();
options.setColorType(PngColorType.TruecolorWithAlpha);
VectorRasterizationOptions defaultOptions = (VectorRasterizationOptions) image.getDefaultOptions(new Object[]{Color.getWhite(), image.getWidth(), image.getHeight()});
options.setVectorRasterizationOptions(defaultOptions);
defaultOptions.setTextRenderingHint(TextRenderingHint.SingleBitPerPixel);
defaultOptions.setSmoothingMode(SmoothingMode.None);
// save()方法是保存图片.
image.save(outFileName, options);
// 也可以以流的方式保存,需要创建一个OutputStream来接收内容.
// ByteArrayOutputStream outStream = new ByteArrayOutputStream();
// image.save(outStream, options);
}
两种方式都很简单,代码量也很少很容易看懂,如果需要解析其它格式的文件可以下载其它类型的jar包。