Java实现添加条形码到PDF表格的方法详解
作者:E-iceblue 发布时间:2023-04-26 12:37:25
标签:Java,条形码,PDF,表格
条码的应用已深入生活和工作的方方面面。在处理条码时,常需要和各种文档格式相结合。当需要在文档中插入、编辑或者删除条码时,可借助于一些专业的类库工具来实现。本文,以操作PDF文件为例,介绍如何在编辑表格时,向单元格中添加条形码。
程序环境
本次功能测试中,使用 Free Spire.PDF for Java。
实现功能的大致思路:生成条形码,将条形码保存为图片,然后在PDF中的表格单元格中插入条码图片。
Spire.PDF for Java 中的Spire.Pdf.Barcode Package提供了多种Barcode类型,可用于创建不同类型的barcode,如图:
jar导入:
可按照如下方法来导入Spire.Pdf.jar 版本:5.1.0
方法1:将 Free Spire.PDF for Java 包下载到本地,解压,找到lib文件夹下的Spire.Pdf.jar文件。然后在IDEA中打开“Project Structure”界面,然后执行如图步骤来手动导入本地路径下的jar文件:
方法2:通过Maven仓库下载导入,如下配置pom.xml:
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf.free</artifactId>
<version>5.1.0</version>
</dependency>
</dependencies>
下面,通过Java代码示例展示如何实现添加条形码到PDF中的表格。
代码示例
Java
import com.spire.pdf.*;
import com.spire.pdf.barcode.PdfCodabarBarcode;
import com.spire.pdf.barcode.TextLocation;
import com.spire.pdf.graphics.PdfBrushes;
import com.spire.pdf.graphics.PdfImage;
import com.spire.pdf.graphics.PdfRGBColor;
import com.spire.pdf.graphics.PdfTrueTypeFont;
import com.spire.pdf.grid.PdfGrid;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class AddBarcodeToTable {
public static void main(String[] args)throws IOException {
//创建PDF文档
PdfDocument pdf = new PdfDocument();
PdfPageBase page = pdf.getPages().add();
//创建PdfGrid类的表格对象
PdfGrid grid = new PdfGrid();
grid.getStyle().setCellPadding(new PdfPaddings(5,5,3,3));
grid.getStyle().setFont(new PdfTrueTypeFont(new Font("Arial Unicode MS", Font.PLAIN,10), true));
grid.getStyle().setTextBrush(PdfBrushes.getBlack());
//定义数据
String[] data = {"产品代码;批次;交易单号;订单条码",
"A1024;一批次;ORD10610; ;",
};
String[][] dataSource = new String[data.length][];
for (int i = 0; i < data.length; i++) {
dataSource[i] = data[i].split("[;]");
}
//填充数据到表格
grid.setDataSource(dataSource);
//创建条形码
PdfCodabarBarcode barcode = new PdfCodabarBarcode("00:12-3456/7890");
barcode.setBarcodeToTextGapHeight(1f);
barcode.setNarrowBarWidth(2);
barcode.setEnableCheckDigit(true);
barcode.setShowCheckDigit(true);
barcode.setTextDisplayLocation(TextLocation.Bottom);
PdfRGBColor blue = new PdfRGBColor(Color.blue);
barcode.setTextColor(blue);
//将条码保存为.png图片并添加到单元格
BufferedImage bufferedImage = barcode.toImage();
ImageIO.write(bufferedImage, "png", new File("F:\\IDEAProject\\Table_PDF\\CODE128.png"));
grid.getRows().get(1).getCells().get(3).getStyle().setBackgroundImage(PdfImage.fromFile("CODE128.png"));
grid.getRows().get(1).setHeight(50f);
grid.getColumns().get(3).setWidth(120f);
//绘制表格到页面指定位置
grid.draw(page, 50, 100);
//保存PDF文档
pdf.saveToFile("AddBarcodeToTable.pdf",FileFormat.PDF);
pdf.dispose();
}
}
文档效果:
来源:https://www.cnblogs.com/Yesi/p/16351636.html


猜你喜欢
- 分享一个小技巧:在日常开发中有时候需要切换到另外的一个分支,但在某些条件下当前的分支上存在一些文件尚未提交,这时候就需要使用到idea自带的
- 本文实例讲述了C#简单创建和删除目录的方法。分享给大家供大家参考。具体如下:using System;using System.IO;cla
- 1 仿射变换仿射变换:一种二维坐标到二维坐标的线性变换,它保持二维图像的平直性与平行性,即变换后直线依然是直线,平行的线依然平行。packa
- Hystrix Dashboard,它主要用来实时监控Hystrix的各项指标信息。通过Hystrix Dashboard反馈的实时信息,可
- 第一篇讲了文件的基本概念,和文件如何打开和关闭。第二篇主要介绍文件的顺序读写和随机读写。外加文件缓冲区的知识点。文件的顺序读写字符输入输出f
- Unity Shader学习:裁切效果,供大家参考,具体内容如下之前看到有人问关于物体裁切方面的问题,初学shader的话可能搞得不是很明白
- java控制台输出图书馆管理系统(只用java代码不用数据库和GUI,java入门的新手秒懂)在个项目中,我只用数组保存数据,和只用for循
- 前言我们平时在开发的时候,发起网络请求前,会需要显示一个Loading,一般的做法都是在xml布局上添加好Loading,然后在Activi
- 可以静态绑定数据源,这样就自动为DataGridView控件添加 相应的行。假如需要动态为DataGridView控件添加新行,方法有很多种
- 前言好久没写 linphone-sdk-android 相关的文章了,本文记录下笔者分析 linphone-sdk 版本号生成的过程。分析注
- 1、UUID类库UUID 根据时间戳实现自动无重复字符串定义// 获取UUIDpublic static UUID randomUUID()
- 1、AOP基本总结连接点(JoinPoint):连接点是程序运行的某个阶段点,如方法调用、异常抛出等切入点(Pointcut):切入点是Jo
- 在Java中可以使用HttpServer类来实现Http服务器,该类位于com.sun.net包下(rt.jar)。实现代码如下:主程序类p
- 本文实例为大家分享了Java通讯录系统的具体代码,供大家参考,具体内容如下import java.util.Scanner;class Pe
- 定义MD全称Message-Digest,即信息摘要,所以MD家族的算法也叫信息摘要算法MD家族有MD2、MD3、MD4、MD5,一代比一代
- 环境与版本hibernate 版本:Hibernate 4.2.2 (下载后的文件名为hibernate-release-4.2.2.Fin
- 本文实例讲述了Android编程基于重力传感器实现横竖屏放向切换功能。分享给大家供大家参考,具体如下:最近项目中用到了vr视频播放,因为自己
- 简单之美,springmvc,mybatis就是一个很好的简单集成方案,能够满足一般的项目需求。闲暇时间把项目配置文件共享出来,供大家参看:
- Spring bean配置单例或多例模式单例spring bean 默认是单例默认,在对应.xml文件中的配置是:<bean id=&
- 1、如果只是一个简单的springboot demo,用以下配置就行新建config类```import org.springf