package uap.pub.fs.pre.convert.impl; import com.ofdbox.convertor.img.Ofd2Img; import com.ofdbox.core.OFDReader; import com.ofdbox.core.model.OFD; import com.ofdbox.core.model.document.Document; import com.ofdbox.core.model.page.Page; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Base64; import java.util.Iterator; import javax.imageio.ImageIO; import nc.bs.logging.Logger; import org.apache.commons.io.IOUtils; import org.ofdrw.converter.ConvertHelper; import uap.pub.fs.domain.basic.FileHeader; import uap.pub.fs.pre.convert.impl.AbstractFileConvertServiceImpl; public class OfdFileConvertServiceImpl extends AbstractFileConvertServiceImpl { public void convert2Pdf(FileHeader fileHeader, InputStream input, OutputStream output) throws IOException { String fileName = fileHeader.getName().substring(0, fileHeader.getName().indexOf(".")) + ".pdf"; File tempFile = File.createTempFile("aaa", ".pdf"); FileOutputStream outputTemp = new FileOutputStream(tempFile); ConvertHelper.toPdf(input, outputTemp); FileInputStream inputPre = new FileInputStream(tempFile); IOUtils.copyLarge(inputPre, output, new byte[1024]); super.uploadConvertFile(fileHeader, fileName, tempFile); } public void convert2Image(FileHeader fileHeader, InputStream input, OutputStream output) throws IOException { String fileName = fileHeader.getName().substring(0, fileHeader.getName().indexOf(".")) + ".jpg"; File tempFile = File.createTempFile("aaa", ".ofd"); FileOutputStream outputTemp = new FileOutputStream(tempFile); IOUtils.copy(input, outputTemp); OFDReader reader = new OFDReader(); reader.getConfig().setValid(false); OFD ofd = reader.read(tempFile); Ofd2Img ofd2Img = new Ofd2Img(); ofd2Img.getConfig().setDrawBoundary(false); int i = 1; for(Iterator var11 = ((Document)ofd.getDocuments().get(0)).getPages().iterator(); var11.hasNext(); ++i) { Page page = (Page)var11.next(); BufferedImage image = ofd2Img.toImage(page, 30); ImageIO.write(image, "JPEG", new FileOutputStream(new File("D:\\test", i + ".jpg"))); } } public void convert2Html(FileHeader fileHeader, InputStream input, OutputStream output) throws IOException { String fileName = fileHeader.getName().substring(0, fileHeader.getName().indexOf(".")) + ".html"; File tempFile = File.createTempFile("aaa", ".ofd"); FileOutputStream outputTemp = new FileOutputStream(tempFile); IOUtils.copy(input, outputTemp); OFDReader reader = new OFDReader(); reader.getConfig().setValid(false); OFD ofd = reader.read(tempFile); Ofd2Img ofd2Img = new Ofd2Img(); ofd2Img.getConfig().setDrawBoundary(false); File tempHtmlFile = File.createTempFile("ofd", ".html"); FileOutputStream htmlOutputTemp = new FileOutputStream(tempHtmlFile); StringBuffer sb = new StringBuffer(); sb.append(""); sb.append(" "); sb.append(""); Iterator inputPre = ((Document)ofd.getDocuments().get(0)).getPages().iterator(); while(inputPre.hasNext()) { Page page = (Page)inputPre.next(); BufferedImage image = ofd2Img.toImage(page, 15); sb.append(this.getBase64(image)); this.tranStr2Out(sb, htmlOutputTemp); } sb.append("
"); sb.append("
"); this.tranStr2Out(sb, htmlOutputTemp); FileInputStream inputPre1 = new FileInputStream(tempHtmlFile); IOUtils.copy(inputPre1, output); super.uploadConvertFile(fileHeader, fileName, tempHtmlFile); tempFile.delete(); } public String getBase64(BufferedImage image) { StringBuffer sb = new StringBuffer(); try { ByteArrayOutputStream e = new ByteArrayOutputStream(); ImageIO.write(image, "jpg", e); sb.append(Base64.getMimeEncoder().encodeToString(e.toByteArray())); sb.insert(0, "

"); } catch (IOException var4) { Logger.error(var4.getMessage()); } return sb.toString(); } public void convert(FileHeader fileHeader, InputStream input, OutputStream output) throws IOException { this.convert2Html(fileHeader, input, output); } }