生成条形码需要ja坐标:

        <!--生成条形码--><dependency><groupId>net.sf.barcode4j</groupId><artifactId>barcode4j-light</artifactId><version>2.0</version></dependency>

调用打印机java使用自身带有的print就可以做到

我们先生成条形码:generateFile方法传入需要条形码包含的信息和生成的路径就可以

package com.hongseng.app.config.barcode;import org.krysalis.barcode4j.impl.code39.Code39Bean;
import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
import org.krysalis.barcode4j.tools.UnitConv;import java.awt.image.BufferedImage;
import java.io.*;/**** @program: fire* @description:* @author: fbl* @create: 2021-08-11 10:24**/
public class BarcodeUtil {/*** 生成文件s** @param msg* @param path* @return*/public static File generateFile(String msg, String path) {File file = new File(path);try {generate(msg, new FileOutputStream(file));} catch (FileNotFoundException e) {throw new RuntimeException(e);}return file;}/*** 生成字节** @param msg* @return*/public static byte[] generate(String msg) {ByteArrayOutputStream ous = new ByteArrayOutputStream();generate(msg, ous);return ous.toByteArray();}/*** 生成到流** @param msg* @param ous*/public static void generate(String msg, OutputStream ous) {if (msg == null || msg.equals("") || ous == null) {return;}Code39Bean bean = new Code39Bean();// 精细度final int dpi = 150;// module宽度final double moduleWidth = UnitConv.in2mm(1.0f / dpi);// 配置对象bean.setModuleWidth(moduleWidth);bean.setWideFactor(3);bean.doQuietZone(false);String format = "image/png";try {// 输出到流BitmapCanvasProvider canvas = new BitmapCanvasProvider(ous, format, dpi,BufferedImage.TYPE_BYTE_BINARY, false, 0);// 生成条形码bean.generateBarcode(canvas, msg);// 结束绘制canvas.finish();} catch (IOException e) {throw new RuntimeException(e);}}
}

在指定路径生产条形码之后,将路径作为参数调用接口打印

第一个参数是路径,其余四个参数是纸张和图片的尺寸

package com.hongseng.app.config.barcode;import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.print.*;
import java.io.IOException;
import java.net.URL;import static java.awt.print.Printable.PAGE_EXISTS;/*** @program: fire* @description:* @author: fbl* @create: 2021-08-11 10:03**/
public  class PrintDemo {public static void qrCodePrint(String path, int pageWidth, int pageHeight, int showWidth, int showHeight) {// 通俗理解就是书、文档Book book = new Book();// 设置成竖打PageFormat pf = new PageFormat();pf.setOrientation(PageFormat.PORTRAIT);// 通过Paper设置页面的空白边距和可打印区域。必须与实际打印纸张大小相符。Paper p = new Paper();//纸张大小p.setSize(pageWidth, pageHeight);p.setImageableArea(0, 0, pageWidth, pageHeight);pf.setPaper(p);// 把 PageFormat 和 Printable 添加到书中,组成一个页面book.append((graphics, pageFormat, pageIndex) -> {try {URL url = new URL(path);//也可以通过file构建一个本地图片File对象传递给ImageIO.read()方法Image image = ImageIO.read(url);//将图片绘制到graphics对象中(为什么把需要打印的内容drawImage就可以实现打印自己取看值传递一引用传递的区别)graphics.drawImage(image, 0, 0, showWidth, showHeight, null);} catch (IOException e) {e.printStackTrace();}return PAGE_EXISTS;//返回0(PAGE_EXISTS)则执行打印,返回1(NO_SUCH_PAGE)则不执行打印}, pf);// 获取打印服务对象PrinterJob job = PrinterJob.getPrinterJob();// 设置打印类job.setPageable(book);try {//可以用printDialog显示打印对话框,在用户确认后打印;也可以直接打印job.print();} catch (PrinterException e) {e.printStackTrace();}}
}

我的service层将两个工具类协同调用

package com.hongseng.app.service.barcode;import com.hongseng.app.config.barcode.BarcodeUtil;
import com.hongseng.app.config.barcode.PrintDemo;
import model.dto.barcode.BarCodeDto;
import model.dto.barcode.PicturePrintDto;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import result.Result;import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.UUID;/*** @program: fire_control* @description:* @author: fbl* @create: 2021-04-01 09:55**/
@Service
public class BarCodeService {@Value("${spring.servlet.multipart.location}")private String picturePath;@Value("${server.port}")private String port;public void prodCode(BarCodeDto barCodeDto) {String codeName = UUID.randomUUID().toString().replaceAll("-", "") + ".png";String path = picturePath + codeName;// 生成条形码图片BarcodeUtil.generateFile(barCodeDto.getId() + "", path);InetAddress localHost = null;try {localHost = Inet4Address.getLocalHost();} catch (UnknownHostException e) {e.printStackTrace();}String ip = localHost.getHostAddress();// 上传图片String finalPath =  "http://" + ip + ":" + port + "/file/" + codeName;// 打印图片// 打印PrintDemo.qrCodePrint(finalPath, barCodeDto.getPageWidth(), barCodeDto.getPageHeight(), barCodeDto.getShowWidth(), barCodeDto.getShowHeight());}}

BarCodeDto 类参数:

package model.dto.barcode;import lombok.Data;import javax.validation.constraints.NotNull;/*** @program: temperature-statistics* @description:* @author: fbl* @create: 2021-08-12 08:19**/
@Data
public class BarCodeDto {@NotNullprivate Integer id;@NotNullprivate Integer pageWidth;@NotNullprivate Integer pageHeight;@NotNullprivate Integer showWidth;@NotNullprivate Integer showHeight;
}

controller层调用就不写了

记录一次java生成条形码并调用打印机打印相关推荐

  1. 使用Java的PrinterJob实现调用打印机打印

    首先我们在使用打印机的话我们需要得到我的这个相关的一些数据,然后我们需要实例化我的这个book对象,这个book对象主要是把我的这个paperFormat对象和我的这个实体类数据的对象放入到我的这个b ...

  2. Java 生成二维码 zxing生成二维码 条形码 服务端生成二维码 Java生成条形码

    Java 生成二维码 zxing生成二维码 条形码 服务端生成二维码 Java生成条形码 一.关于ZXing 1.ZXing是谷歌开源的支持二维码.条形码 等图形的生成类库:支持生成.和解码功能. G ...

  3. java生成条形码-使用zxing

    背景 目前二维码的应用场景已经遍布各类互联网平台,通常是将产品/商品的唯一编号存储于二维码中以做扫码识别. 但是在很多场景下依然需要使用条形码(一维码) 解决方案 java生成条形码可使用的方式:ba ...

  4. java打印word_Java jacob调用打印机打印word文档

    前面说了Java如何生成复杂的Word文档,今年记录下Java如何调用打印机打印word文档. 起初用的是自带的PrintJob,但是系统提供的打印机制并不成熟完整.网上的代码也是千篇一律,在我的打印 ...

  5. Java调用打印机打印(远程、本地皆可用)

    Java调用打印机打印(远程.本地皆可用) 背景 准备 MAVEN环境 步骤 获取PrinterJob 设置PrinterJob纸张样式 打印PDF 背景 开发个Java项目需要远程调用共享打印机打印 ...

  6. 【项目管理】Java使用pdfbox调用打印机打印PDF文件

    [项目管理]Java使用pdfbox调用打印机打印PDF文件 1.项目前言 2.项目实现 3.关键代码 4.效果演示 5.问题处理 5.1 安装对应字体 5.2 修改对应代码 系统:Win10 Jav ...

  7. java程序实现wifi连接打印_Android下通过wifi调用打印机打印,Java代码片段分享,

    Android下通过wifi调用打印机打印 chongq 分享于 2小时前 4972阅 0人收藏此代码, 好图网图标搜索引擎,提供超过60万的免费图标.PNG图标.ICO图标.ICNS图标.网页图标 ...

  8. java 调用打印机打印

    要在 Java 中调用打印机打印,您可以使用 Java 的打印 API.下面是一个简单的示例,展示了如何使用 Java 打印 API 来打印文本: import java.awt.print.Prin ...

  9. Java调用打印机打印pdf

    要在Java中调用打印机打印PDF,可以使用Java打印API和第三方库,如Apache PDFBox或iText PDF. 以下是使用Java打印API打印PDF的基本步骤: 安装打印机:确保您已经 ...

最新文章

  1. flex版的流程设计器
  2. 详细分析如何在java代码中使用继承和组合
  3. luogu_1134 阶乘问题
  4. vue生命周期大白话篇
  5. JS重写toString(),打印想要的值
  6. 【渝粤教育】国家开放大学2018年春季 3897T商务英语1 参考试题
  7. 【转】刨根究底字符编码之九——字符编码方案的演变与字节序
  8. Hiberate中Update和Merge的一个小的区别
  9. 漫游Kafka实战篇clientAPI
  10. 巧用clear:both
  11. 学生信息管理系统--毕业论文
  12. qq 病毒 html,盗qq号软件里有病毒吗
  13. cad延伸快捷键_CAD绘图大师都在用的46组快捷键,高效绘图必备
  14. 架构必看:12306抢票亿级流量架构演进(图解+秒懂+史上最全)
  15. HHS整合(Struts2+Spring+Hibernate)
  16. 修建道路(最小生成树)
  17. 计算机网络常见面试题,一网打尽!
  18. 解决mongodb插入数据出现bson.errors错误
  19. 浏览器 Web 访问剪切板图片
  20. 290页12万字数字乡村项目规划建设方案

热门文章

  1. 关于浮子流量计的小知识!
  2. Mac视频格式转换器哪个好
  3. sysstat使用及字段说明
  4. 学习yade的日常犯错2019.4.7
  5. Qt 字符串合成语音并播放(QTextToSpeech)
  6. 盲源分离matlab程序,Ica盲源分离Matlab程序
  7. DockerBuild报错:The command ‘/bin/sh -c yum install -y vim‘ returned a non-zero code: 1
  8. Java 数据结构与算法
  9. GridView分页
  10. JavaScript----<script></script>