C#/VB.NET 在PDF表格中添加条形码

47 篇文章 1 订阅

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


【类库引入及代码思路】

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

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

Spire.PDF for .NET 中的Spire.Pdf.Barcode namespace提供了多种Barcode类型,用于满足创建不同类型barcode的需求,如图:

Spire.Pdf.dll文件的引入方法如下:

方法1

在程序中引入Spire.Pdf.dll文件;将Free Spire.PDF for .NET下载到本地,解压,安装。安装完成后,找到安装路径下BIN文件夹中的Spire.Pdf.dll。然后在Visual Studio中打开“解决方案资源管理器”,鼠标右键点击“引用”,“添加引用”,将本地路径BIN文件夹下的dll文件添加引用至程序。

方法2

通过NuGet安装。可通过以下2种方法安装:

1.可以在Visual Studio中打开“解决方案资源管理器”,鼠标右键点击“引用”,“管理NuGet包”,然后搜索“Free Spire.PDF”,点击“安装”。等待程序安装完成。

2.将以下内容复制到PM控制台安装。

Install-Package FreeSpire.PDF -Version 8.2.0


【代码示例】

C# 

using Spire.Pdf;
using Spire.Pdf.Barcode;
using Spire.Pdf.Graphics;
using Spire.Pdf.Grid;
using System.Drawing;

namespace AddBarcodeToTable
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建PDF文档
            PdfDocument pdf = new PdfDocument();
            PdfPageBase page = pdf.Pages.Add();   
            
            //创建PdfGrid类的表格对象
            PdfGrid grid = new PdfGrid();
            grid.Style.CellPadding = new PdfPaddings(1, 1, 1, 1);
            grid.Style.Font = new PdfTrueTypeFont(new Font("Arial Unicode MS", 9f), true);

            //添加2行2列到表格
            PdfGridRow row1 = grid.Rows.Add();
            PdfGridRow row2 = grid.Rows.Add();       
            grid.Columns.Add(2);

            //设置列宽 
            foreach (PdfGridColumn column in grid.Columns)
            {
                column.Width = 150f;
            }

            //在单元格中写入数据 
            row1.Cells[0].Value = "产品编号";
            row1.Cells[1].Value = "条码";
            row2.Cells[0].Value = "B0215";
            
            //创建条码
            PdfCodabarBarcode barcode1 = new PdfCodabarBarcode("00:12-3456/7890");
            barcode1.BarcodeToTextGapHeight = 1f;
            barcode1.EnableCheckDigit = true;
            barcode1.ShowCheckDigit = true;          
            barcode1.TextDisplayLocation = TextLocation.Bottom;
            barcode1.TextColor = Color.Blue;           

            //将条码保存为图片到指定路径
            Image image =barcode1.ToImage();           
            image.Save(@"F:/VS2017Project/DrawTable_PDF/AddBarcodeToTable/bin/Debug/BarcodeImage.png");

            //将条码图片添加到表格单元格
            string imgpath = "F:/VS2017Project/DrawTable_PDF/AddBarcodeToTable/bin/Debug/BarcodeImage.png";           
            PdfGridCellContentList contentList = new PdfGridCellContentList();
            PdfGridCellContent content = new PdfGridCellContent();
            SizeF imageSize = new SizeF(120, 80);
            content.ImageSize = imageSize;
            content.Image = PdfImage.FromFile(imgpath);           
            contentList.List.Add(content);
            row2.Cells[1].Value = contentList;           

            //绘制表格到页面指定位置
            grid.Draw(page, new PointF(0, 40));

            //保存PDF文档
            pdf.SaveToFile("AddBarcodeToTable.pdf",FileFormat.PDF);
            System.Diagnostics.Process.Start("AddBarcodeToTable.pdf");
        }
    }
}

vb.net

Imports Spire.Pdf
Imports Spire.Pdf.Barcode
Imports Spire.Pdf.Graphics
Imports Spire.Pdf.Grid
Imports System.Drawing

Namespace AddBarcodeToTable
	Class Program
		Private Shared Sub Main(args As String())
			'创建PDF文档
			Dim pdf As New PdfDocument()
			Dim page As PdfPageBase = pdf.Pages.Add()

			'创建PdfGrid类的表格对象
			Dim grid As New PdfGrid()
			grid.Style.CellPadding = New PdfPaddings(1, 1, 1, 1)
			grid.Style.Font = New PdfTrueTypeFont(New Font("Arial Unicode MS", 9F), True)

			'添加2行2列到表格
			Dim row1 As PdfGridRow = grid.Rows.Add()
			Dim row2 As PdfGridRow = grid.Rows.Add()
			grid.Columns.Add(2)

			'设置列宽 
			For Each column As PdfGridColumn In grid.Columns
				column.Width = 150F
			Next

			'在单元格中写入数据 
			row1.Cells(0).Value = "产品编号"
			row1.Cells(1).Value = "条码"
			row2.Cells(0).Value = "B0215"

			'创建条码
			Dim barcode1 As New PdfCodabarBarcode("00:12-3456/7890")
			barcode1.BarcodeToTextGapHeight = 1F
			barcode1.EnableCheckDigit = True
			barcode1.ShowCheckDigit = True
			barcode1.TextDisplayLocation = TextLocation.Bottom
			barcode1.TextColor = Color.Blue

			'将条码保存为图片到指定路径
			Dim image As Image = barcode1.ToImage()
			image.Save("F:/VS2017Project/DrawTable_PDF/AddBarcodeToTable/bin/Debug/BarcodeImage.png")

			'将条码图片添加到表格单元格
			Dim imgpath As String = "F:/VS2017Project/DrawTable_PDF/AddBarcodeToTable/bin/Debug/BarcodeImage.png"
			Dim contentList As New PdfGridCellContentList()
			Dim content As New PdfGridCellContent()
			Dim imageSize As New SizeF(120, 80)
			content.ImageSize = imageSize
			content.Image = PdfImage.FromFile(imgpath)
			contentList.List.Add(content)
			row2.Cells(1).Value = contentList

			'绘制表格到页面指定位置
			grid.Draw(page, New PointF(0, 40))

			'保存PDF文档
			pdf.SaveToFile("AddBarcodeToTable.pdf", FileFormat.PDF)
			System.Diagnostics.Process.Start("AddBarcodeToTable.pdf")
		End Sub
	End Class
End Namespace

文档效果:

 

另外,如果需要在PDF指定位置插入条形码或者二维码,则可以参考这篇文章:

C# 如何在PDF文档中添加一维条形码和二维条形码icon-default.png?t=M4ADhttps://blog.csdn.net/Eiceblue/article/details/79174110

—END—

.Net 条码组件包括两个独立组件: BarcodeNet: 用于生成条码,BarcodeScanNet: 用于条码识别 一、条码生成组件(BarcodeNet.dll) 1.功能说明   BarcodeNet是 .Net 下的条形码组件,支持如下类型: CODE39,CODE39Extended, Codabar, UPCA, UPCE, EAN13, EAN8, Interleaved2of5, PostNet, ISBN, CODE128, CODE93等 - 将条码保存为 BMP、GIF、JPG、PNG、TIFF等文件格式 - 设置条码宽度和高度 - 设置条码背景和前景颜色 支持的开发环境包括: VS.Net 2005, VS.Net 2008, VS.Net 2010, Delphi .Net,Delphi,Visual Basic等 2.使用说明 Barcode bar = new Barcode(); bar.ShowCode = true; bar.Width = 400; bar.Height = 150; // bar.SerialNo = ""; //注册后请给序列号赋值,否则只能产生"123456789012"固定条玛 PictureBox imgBarcode = new PictureBox(); imgBarcode.Image = bar.GenerateImage(BarcodeNet.TYPE.CODE39,"1234"); 可以参考 demo 程序。 * Delphi: 要求安装.Net Framework 2.0的环境。先运行Com目录下的RegisterForCOM.bat进行组件注册,然后才能使用。 使用方法可以参考 delphi目录下demo 程序。 二、条码识别组件(BarcodeScanNet.dll) 1.功能说明   BarcodeScanNet是 .Net 下的条形码图像扫描识别组件,支持如下类型: CODE39,EAN/UPC,CODE128 - 可以从BMP、GIF、JPG、PNG、TIFF等文件扫描识别条码 - 支持水平或垂直扫描 - 可以扫描图像的多个条码 支持的开发环境包括: VS.Net 2003, VS.Net 2005, VS.Net 2008, VS.Net 2010, Delphi .Net, Delphi,Visual Basic等 2.使用说明 System.Collections.ArrayList barcodes = new ArrayList(); //BarcodeFromImage.SerialNo = ""; //注册后请给序列号赋值,否则ScanImage函数只会显示条码,barcodes不会包含扫描到的条码 BarcodeFromImage.ScanImage(ref barcodes,pictureBox1.Image as Bitmap); //注册后barcodes返回扫描到的条码,如果图像有重复的条码会自动去除 可以参考 demo 程序。 * Delphi: 要求安装.Net Framework 2.0的环境。先运行Com目录下的RegisterForCOM.bat进行组件注册,然后才能使用。 使用方法可以参考 delphi目录下demo 程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值