Index: ssts-web/src/main/java/com/forgon/disinfectsystem/printbarcode/action/PrintBarcodeAction.java =================================================================== diff -u -r25157 -r30345 --- ssts-web/src/main/java/com/forgon/disinfectsystem/printbarcode/action/PrintBarcodeAction.java (.../PrintBarcodeAction.java) (revision 25157) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/printbarcode/action/PrintBarcodeAction.java (.../PrintBarcodeAction.java) (revision 30345) @@ -1,8 +1,13 @@ package com.forgon.disinfectsystem.printbarcode.action; +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; +import java.io.PrintWriter; +import java.util.Base64; +import javax.imageio.ImageIO; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.StringUtils; @@ -11,6 +16,7 @@ import org.apache.struts2.convention.annotation.ParentPackage; import com.forgon.tools.StrutsParamUtils; +import com.forgon.tools.StrutsResponseUtils; import com.google.zxing.BarcodeFormat; import com.google.zxing.MultiFormatWriter; import com.google.zxing.client.j2se.MatrixToImageWriter; @@ -28,6 +34,7 @@ public void printBarcodeImage() { String barcode = StrutsParamUtils.getPraramValue("barcode", ""); String codeType = StrutsParamUtils.getPraramValue("codeType", ""); + String returnFormat = StrutsParamUtils.getPraramValue("returnFormat", ""); int width = 150; int height = 26; int codeWidth = 3 + // start guard @@ -52,10 +59,15 @@ } if(StringUtils.isNotBlank(barcode)){ HttpServletResponse response = StrutsParamUtils.getResponse(); - response.setContentType("image/jpeg"); try { - OutputStream outputStream = response.getOutputStream(); - wirteToStream(barcode,format, width, height, outputStream); + if(StringUtils.equals(returnFormat, "base64")){ + String base64 = wirteToBase64(barcode, format, codeWidth, height); + StrutsResponseUtils.output(base64); + }else{ + response.setContentType("image/jpeg"); + OutputStream outputStream = response.getOutputStream(); + wirteToStream(barcode,format, width, height, outputStream); + } } catch (IOException e) { e.printStackTrace(); } @@ -72,5 +84,20 @@ e.printStackTrace(); } } + + private String wirteToBase64(String contents, BarcodeFormat format,int width, int height){ + try { + BitMatrix bitMatrix = new MultiFormatWriter().encode(contents, + format, width, height); + BufferedImage image = MatrixToImageWriter.toBufferedImage(bitMatrix); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + ImageIO.write(image, "png", out); + return Base64.getEncoder().encodeToString(out.toByteArray()); + } catch (Exception e) { + e.printStackTrace(); + } + return ""; + } + }