条码的应用已深入生活和工作的方方面面。在处理条码时,常需要和各种文档格式相结合。当需要在文档中插入、编辑或者删除条码时,可借助于一些专业的类库工具来实现。本文,以操作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(); } }
文档效果:
★ 阅读推荐:C#/VB.NET 在PDF表格中添加条形码
—END—