pom.xml
<!--Google Zxing 條碼生成-->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.0.0</version>
</dependency>
代碼:
package com.christian.admin.util;
import com.google.zxing.*;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* @program: christian
* @Date: 2019/7/11 9:33
* @Author: rui
* @Description:
*/
public class PrintTest {
public static void main(String[] args) {
String str = "府過山逢都";
String barCode = "201408210001";
String dateStr = "2014/08/25 23:59:59";
String name = "Christopher Adam Hernandez";
String visitorCompany = "CHINA Chengdu";
String employeeName = "SDFEE2101903162037430";
int zoom = 6;
BufferedImage resultImage = null;
BufferedImage bufferedImage = new BufferedImage(216 * zoom, 144 * zoom, BufferedImage.TYPE_INT_RGB);
Graphics g = bufferedImage.getGraphics();
// g.draw3DRect(0, 0, 216, 144, true);
//将文字,邊框或要填充的區域為指定顔色
g.setColor(Color.WHITE);
//用預先指定的顔色填充矩形
g.fillRect(0, 0, 216 * zoom, 144 * zoom);
g.setColor(Color.BLACK);
// Image image;
try {
// image = ImageIO.read(PrintTest.class.getClassLoader().getResource("logo.bmp").openStream());
// if (image != null) {
// g.drawImage(image, 6 * zoom, 6 * zoom, 60 * zoom, 24 * zoom, null);
// }
g.setFont(new Font("宋體", Font.BOLD, 14 * zoom));
//字元串寬度
int strWidth = g.getFontMetrics().stringWidth(str);
//中心點x位置
int centerx = bufferedImage.getWidth() / 2;
g.drawString(str, centerx - strWidth / 2, 24 * zoom);
g.setFont(new Font("宋體", Font.BOLD, 10 * zoom));
g.drawString("name:", 10 * zoom, 42 * zoom);
g.drawString("monument:", 10 * zoom, 63 * zoom);
g.drawString("history:", 10 * zoom, 80 * zoom);
g.drawString("編号:", 10 * zoom, 97 * zoom);
g.setFont(new Font("宋體", Font.PLAIN, 8 * zoom));
g.drawString(name, 75 * zoom, 42 * zoom);
g.drawString(dateStr, 75 * zoom, 63 * zoom);
g.drawString(visitorCompany, 75 * zoom, 80 * zoom);
g.drawString(employeeName, 75 * zoom, 97 * zoom);
g.drawImage(encodeBarcode(barCode,300, 300), 40 * zoom, 112 * zoom, 152 * zoom, 30 * zoom, null);
// g.drawString("DF123435657", 92 * zoom, 97 * zoom);
g.dispose();
//資産編号
resultImage = bufferedImage;//rotate(bufferedImage, 360);
// encode: com.sun.image.codec.jpeg
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File("D:\\test.jpg")));
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(resultImage);
param.setQuality(1.0f, false);
encoder.setJPEGEncodeParam(param);
try {
encoder.encode(resultImage);
} catch (IOException ioe) {
ioe.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
//
// print(resultImage);
}
/**
* 生成條形碼
* @param contents 條形碼内容
* @param width 條形碼寬度
* @param height 條形碼高度
* @return
*/
public static BufferedImage encodeBarcode(String contents, int width, int height){
int codeWidth = 3 + // start guard
(7 * 6) + // left bars
5 + // middle guard
(7 * 6) + // right bars
3; // end guard
codeWidth = Math.max(codeWidth, width);
BufferedImage barcode = null;
try {
BitMatrix bitMatrix = new MultiFormatWriter().encode(contents, BarcodeFormat.CODE_128, codeWidth, height, null);
barcode= MatrixToImageWriter.toBufferedImage(bitMatrix);
} catch (Exception e) {
e.printStackTrace();
}
return barcode;
}
/**
* 解析讀取條形碼
* @param barcodePath 條形碼檔案路徑
* @return
*/
public static String decodeBarcode(String barcodePath){
BufferedImage image;
Result result = null;
try {
image = ImageIO.read(new File(barcodePath));
if (image != null) {
LuminanceSource source = new BufferedImageLuminanceSource(image);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
result = new MultiFormatReader().decode(bitmap, null);
}
return result.getText();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPB9UNBpmTxkFVPpHOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZwpmL3cDNzMTM1UTMzEzNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)