¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.jeecg.modules.tms.utils; |
| | | |
| | | import com.google.zxing.BarcodeFormat; |
| | | import com.google.zxing.EncodeHintType; |
| | | import com.google.zxing.MultiFormatWriter; |
| | | import com.google.zxing.client.j2se.MatrixToImageWriter; |
| | | import com.google.zxing.common.BitMatrix; |
| | | import com.google.zxing.qrcode.QRCodeWriter; |
| | | import liquibase.pro.packaged.S; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.jeecg.common.api.vo.Result; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RequestParam; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import javax.print.*; |
| | | import javax.print.attribute.HashPrintRequestAttributeSet; |
| | | import javax.print.attribute.PrintRequestAttributeSet; |
| | | import java.awt.print.*; |
| | | import java.awt.image.BufferedImage; |
| | | import java.io.ByteArrayOutputStream; |
| | | import java.io.OutputStream; |
| | | import java.util.*; |
| | | |
| | | @RestController |
| | | @RequestMapping("/tms/qyCode") |
| | | @Slf4j |
| | | public class QrCodePrinterUtils{ |
| | | |
| | | @GetMapping("/generate") |
| | | public Result<Map<String, String>> generateQrCode() throws Exception { |
| | | String content = "Q201204330002-0001"; |
| | | // çæäºç»´ç å¾çï¼Base64ï¼ |
| | | ByteArrayOutputStream os = new ByteArrayOutputStream(); |
| | | generateQRCodeImage(content, 200, 200, os); |
| | | String base64Img = "data:image/png;base64," + Base64.getEncoder().encodeToString(os.toByteArray()); |
| | | |
| | | // è¿åç»æ |
| | | Map<String, String> result = new HashMap<>(); |
| | | result.put("image", base64Img); |
| | | result.put("content", content); |
| | | return Result.OK(result); |
| | | } |
| | | |
| | | public static void generateQRCodeImage(String text, int width, int height, OutputStream os) throws Exception { |
| | | QRCodeWriter qrCodeWriter = new QRCodeWriter(); |
| | | BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height); |
| | | MatrixToImageWriter.writeToStream(bitMatrix, "PNG", os); |
| | | } |
| | | |
| | | public static String generateBacthQRCode(String content, int width, int height) { |
| | | try { |
| | | Map<EncodeHintType, Object> hints = new HashMap<>(); |
| | | hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); |
| | | hints.put(EncodeHintType.MARGIN, 1); |
| | | |
| | | BitMatrix matrix = new MultiFormatWriter().encode( |
| | | content, |
| | | BarcodeFormat.QR_CODE, |
| | | width, |
| | | height, |
| | | hints |
| | | ); |
| | | |
| | | ByteArrayOutputStream os = new ByteArrayOutputStream(); |
| | | MatrixToImageWriter.writeToStream(matrix, "PNG", os); |
| | | |
| | | return "data:image/png;base64," + |
| | | Base64.getEncoder().encodeToString(os.toByteArray()); |
| | | } catch (Exception e) { |
| | | throw new RuntimeException("çæäºç»´ç 失败", e); |
| | | } |
| | | } |
| | | |
| | | @GetMapping("/batchGenerate") |
| | | public Result<List<Map<String,String>>> generateBatchQrCode(){ |
| | | List<Map<String,String>> results = new ArrayList<>(); |
| | | List<String> contentList = new ArrayList<>(); |
| | | contentList.add("Q201204330002-0001"); |
| | | contentList.add("Q201204330002-0002"); |
| | | contentList.add("Q201204330002-0003"); |
| | | for(String content : contentList){ |
| | | Map<String,String> result = new HashMap<>(); |
| | | result.put("content",content); |
| | | result.put("image",generateBacthQRCode(content, 200, 200)); |
| | | // çæäºç»´ç å¾çï¼Base64ï¼ |
| | | results.add(result); |
| | | } |
| | | return Result.OK(results); |
| | | } |
| | | } |