前端 Thymeleaf 怎么生成条形码图片
时间: 2024-01-22 17:02:04 浏览: 221
在使用 Thymeleaf 生成条形码图片时,我们可以借助后端的 Java 代码和前端的 JavaScript 代码来实现。下面是一个示例:
1. 首先,确保你的项目中已经引入了 Thymeleaf 和 JavaScript 库 `JsBarcode`。
2. 在后端的 Java 代码中,使用 `ZXing` 库来生成条形码图片。可以创建一个方法,将条形码的值作为参数传递进去,并返回生成的图片的 Base64 编码字符串。
```java
import org.thymeleaf.util.StringUtils;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.StringUtils;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
public class BarcodeGenerator {
public static String generateBarcodeImage(String barcodeValue) {
if (StringUtils.isEmpty(barcodeValue)) {
return null;
}
try {
// 设置条形码参数
BarcodeFormat barcodeFormat = BarcodeFormat.CODE_128;
int width = 300;
int height = 100;
// 生成 BitMatrix 对象
BitMatrix bitMatrix = new MultiFormatWriter().encode(barcodeValue, barcodeFormat, width, height);
// 将 BitMatrix 转换为 BufferedImage
BufferedImage bufferedImage = MatrixToImageWriter.toBufferedImage(bitMatrix);
// 将 BufferedImage 转换为 Base64 编码字符串
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ImageIO.write(bufferedImage, "png", outputStream);
byte[] imageBytes = outputStream.toByteArray();
String base64Image = Base64.getEncoder().encodeToString(imageBytes);
return base64Image;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
```
3. 在前端的 Thymeleaf 模板中,使用 JavaScript 代码来调用 `JsBarcode` 并显示生成的条形码图片。
```html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>生成条形码图片</title>
<script src="https://cdn.jsdelivr.net/npm/jsbarcode@3.11.0/dist/jsbarcode.all.min.js"></script>
</head>
<body>
<h1>生成条形码图片</h1>
<div id="barcode"></div>
<script th:inline="javascript">
// 获取需要生成条形码的值
var barcodeValue = /*[[${barcodeValue}]]*/ "";
// 使用 Thymeleaf 表达式获取后端生成的条形码图片的 Base64 编码字符串
var barcodeImage = /*[[${barcodeImage}]]*/ "";
// 在前端使用 JsBarcode 生成条形码
JsBarcode("#barcode", barcodeValue, {
format: "CODE128",
displayValue: true,
backgroundImage: "data:image/png;base64," + barcodeImage
});
</script>
</body>
</html>
```
在上述示例中,我们通过 Thymeleaf 表达式将条形码的值传递到前端,并将后端生成的条形码图片的 Base64 编码字符串通过 Thymeleaf 表达式注入到 JavaScript 代码中。然后,我们使用 `JsBarcode` 生成条形码,并将生成的条形码图片作为背景图片应用到 `<div>` 元素中。
希望这个示例对你有所帮助!如有更多问题,请继续提问。
阅读全文