Java实现添加条形码到PDF表格的方法详解

作者:E-iceblue 时间:2023-04-26 12:37:25 

条码的应用已深入生活和工作的方方面面。在处理条码时,常需要和各种文档格式相结合。当需要在文档中插入、编辑或者删除条码时,可借助于一些专业的类库工具来实现。本文,以操作PDF文件为例,介绍如何在编辑表格时,向单元格中添加条形码。

程序环境

本次功能测试中,使用 Free Spire.PDF for Java。

实现功能的大致思路:生成条形码,将条形码保存为图片,然后在PDF中的表格单元格中插入条码图片。

Spire.PDF for Java 中的Spire.Pdf.Barcode Package提供了多种Barcode类型,可用于创建不同类型的barcode,如图:

Java实现添加条形码到PDF表格的方法详解

jar导入:

可按照如下方法来导入Spire.Pdf.jar 版本:5.1.0

方法1:将 Free Spire.PDF for Java 包下载到本地,解压,找到lib文件夹下的Spire.Pdf.jar文件。然后在IDEA中打开“Project Structure”界面,然后执行如图步骤来手动导入本地路径下的jar文件:

Java实现添加条形码到PDF表格的方法详解

方法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();
   }
}

文档效果:

Java实现添加条形码到PDF表格的方法详解

来源:https://www.cnblogs.com/Yesi/p/16351636.html

标签:Java,条形码,PDF,表格
0
投稿

猜你喜欢

  • C# Linq延迟查询的执行实例代码

    2023-04-24 05:34:59
  • Flutter加载图片的多样玩法汇总

    2023-08-24 09:48:22
  • 详解用Spring Boot Admin来监控我们的微服务

    2022-02-12 15:18:03
  • Android扩大View点击范围的方法

    2022-07-21 17:49:29
  • 详解Android获取设备唯一ID的几种方式

    2022-07-15 12:33:41
  • java实现纸牌游戏之小猫钓鱼算法

    2021-08-11 22:57:00
  • java使用websocket,并且获取HttpSession 源码分析(推荐)

    2023-08-04 17:38:05
  • Android动态自定义圆形进度条

    2022-07-21 21:29:50
  • Spring中的两种代理JDK和CGLIB的区别浅谈

    2023-01-04 19:05:05
  • C#判断系统是32位还是64位的方法

    2022-04-01 12:44:04
  • 通俗易懂的C#之反射教程

    2021-08-08 19:35:02
  • Java窗口精细全方位讲解

    2023-03-05 15:35:15
  • unity 切换场景不销毁物体问题的解决

    2022-04-29 11:26:06
  • java 实现截取字符串并按字节分别输出实例代码

    2021-08-28 08:10:44
  • SpringMVC学习之JSTL条件行为和遍历行为详解

    2021-08-19 08:56:09
  • 模拟打印机排队打印效果

    2023-12-13 13:26:22
  • Feign如何自定义注解翻译器

    2022-11-09 07:05:04
  • SpringBoot Security权限控制自定义failureHandler实例

    2022-12-03 08:46:58
  • C# List实现行转列的通用方案

    2022-03-28 02:53:04
  • Java方法的覆盖与隐藏的区别分析

    2021-12-19 05:15:52
  • asp之家 软件编程 m.aspxhome.com