條碼的應用已深入生活和工作的方方面面。在處理條碼時,常需要和各種文件格式相結合。當需要在文件中插入、編輯或者刪除條碼時,可藉助於一些專業的類庫工具來實現。本文,以操作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
文件效果:
—END—