该篇文章只写了将SVG报文字符串转PNG,后续再更新SVG图片转PNG,如有问题点,请大家留言,谢谢!
一、引jar包
需要引入的jar包包含如下:(这里的jar包版本,大家可以根据自己的maven私服上的版本做对应关系,可以是其他版本号)
二、相关代码
package com.mdp.backend.frame.impl.utils;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.apache.batik.transcoder.TranscoderInput;
import org.apache.batik.transcoder.TranscoderOutput;
import org.apache.batik.transcoder.image.PNGTranscoder;
/**
* 流程图片操作
* @author lixiaolong
*
*/
public class ProcessPictureUtils {
/**
* 将svg字符串转换为png
*
* @param svgCode svg代码
* @param pngFilePath 保存的路径
* @throws TranscoderException svg代码异常
* @throws IOException io错误
*/
public static String convertToPng(String svgCode, String pngFilePath){
String errorMessage = "";
File file = new File(pngFilePath);
FileOutputStream outputStream = null;
try {
file.createNewFile();
outputStream = new FileOutputStream(file);
convertToPng(svgCode, outputStream);
}catch(Exception e) {
e.printStackTrace();
errorMessage = "将svg字符串转换为png出错!";
Log4jUtils.info(String.format("将svg字符串转换为png出错!: Excepion:=%s",e));
}finally {
if (outputStream != null) {
try {
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
return errorMessage;
}
/**
* 将svgCode转换成png文件,直接输出到流中
*
* @param svgCode svg代码
* @param outputStream 输出流
* @throws TranscoderException 异常
* @throws IOException io异常
*/
public static void convertToPng(String svgCode, OutputStream outputStream){
try {
byte[] bytes = svgCode.getBytes("utf-8");
PNGTranscoder t = new PNGTranscoder();
TranscoderInput input = new TranscoderInput(new ByteArrayInputStream(bytes));
TranscoderOutput output = new TranscoderOutput(outputStream);
t.transcode(input, output);
outputStream.flush();
} catch (Exception e) {
e.printStackTrace();
Log4jUtils.info(String.format("将svg转换成png文件,直接输出到流中出错!: Excepion:=%s",e));
}
}
}
三、测试报文字符串样例
"\n\n\n"
四、效果图