赞
踩
pom依赖:
<dependency> <groupId>org.ofdrw</groupId> <artifactId>ofdrw-converter</artifactId> <version>1.17.18</version> </dependency>
代码实现:
import com.alibaba.fastjson.JSON; import org.ofdrw.converter.ImageMaker; import org.ofdrw.reader.OFDReader; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; public class OfdToJpgTest { public static void main(String[] args) { String fileAddress = "D:/tmpfiles"; String filename = "test00.ofd"; String type = "jpg"; List<String> list = ofd2png(fileAddress, filename, type); System.out.println("---list="+ JSON.toJSONString(list)); } public static List<String> ofd2png(String fileAddress, String filename, String type) { // 将ofd转图片 并且自定义图片的格式大小 List<String> picList= new ArrayList<String>(); try { //filename文件路径到文件名 System.out.println("addr===="+fileAddress + "/" + filename); //文件输入路径 Path src = Paths.get(fileAddress + "/" + filename); // ImageMaker imageMaker = new ImageMaker(new OFDReader(src), 15); // ImageMaker imageMaker = new ImageMaker(new OFDReader(fileAddress + "/" + filename), 15); // 创建转换转换对象,设置 每毫米像素数量(Pixels per millimeter) //删除new OFDReader(src)时产生的前缀为ofd-tmp-的临时文件假文件 try close 语法 try(OFDReader reader = new OFDReader(src)){ ImageMaker imageMaker = new ImageMaker(reader, 15); imageMaker.config.setDrawBoundary(false); for (int i = 0; i < imageMaker.pageSize(); i++) { //指定页码转换图片 BufferedImage image = imageMaker.makePage(i); //文件要存的路径 String picAdd =fileAddress + "/" + filename.replace(".ofd","") + "_" + (i + 1) + "." + type; //存储为指定格式图片 ImageIO.write(image, "PNG", new File(picAdd)); picList.add(picAdd.replace(fileAddress,"")); } }catch (IOException e){ System.out.println("ofd转图片失败{}"+JSON.toJSONString(fileAddress + "/" + filename)); } } catch (Exception e) { System.out.println("OFD转图片出错,文件为:{}"+fileAddress+"/"+filename); e.printStackTrace(); } System.out.println("picList:{}"+picList); return picList; } }
在JDK7优化后的try-with-resource语句确保了每个资源在语句结束时关闭。try()里面的流对象对应的类都实现了自动关闭接口AutoCloseable。
try (创建流对象语句,如果多个使用';'隔开) {
// 读写数据、输入输出流的操作
} catch (IOException e) {
e.printStackTrace();
}
//jdk1.7之后 try(FileWriter fileWriter = new FileWriter("D:\\tmpfiles\\a\\test.txt")){ fileWriter.write("test 哈哈!"); } catch (IOException e) { e.printStackTrace(); } //jdk1.7之前 FileWriter fileWriter = null; try { fileWriter = new FileWriter("D:\\tmpfiles\\a\\test.txt"); fileWriter.write("test 哈哈"); } catch (IOException e) { e.printStackTrace(); }finally { if(fileWriter != null){ try { fileWriter.close(); } catch (IOException e) { e.printStackTrace(); } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。