C#/VB.NET 在PDF表格中添加條形碼

来源:https://www.cnblogs.com/Yesi/archive/2022/06/02/16336850.html
-Advertisement-
Play Games

條碼的應用已深入生活和工作的方方面面。在處理條碼時,常需要和各種文檔格式相結合。當需要在文檔中插入、編輯或者刪除條碼時,可藉助於一些專業的類庫工具來實現。本文,以操作PDF文件為例,介紹如何在編輯表格時,向單元格中插入條形碼。 【類庫引入及代碼思路】 本次功能測試中,使用 Free Spire.PD ...


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

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一 設計原則 (SOLID) 1. S - 單一職責原則(Single Responsibllity Principle) 1.1 定義 一個類或者模塊只負責完成一個職責(或功能), 認為“對象應該僅具有一種單一功能”的概念, 如果一個類包含了兩個或兩個以上業務沒有關聯的功能,就被認為是職責不夠單一 ...
  • 來源:my.oschina.net/xiaolyuh/blog/1615639 在日常開發中有很多地方都有類似扣減庫存的操作,比如電商系統中的商品庫存,抽獎系統中的獎品庫存等。 解決方案 使用mysql資料庫,使用一個欄位來存儲庫存,每次扣減庫存去更新這個欄位。 還是使用資料庫,但是將庫存分層多份存 ...
  • 前言: 之前,我寫筆記的工具一直都是 notion,而且沒有寫博客的習慣。但是一是由於 notion 的伺服器在國外,有時候很不穩定;二是由於 notion 的分享很不方便,把筆記分享給別人點開鏈接之後還要先登錄才能查看內容。於是我又在 掘金 平臺寫了幾篇隨筆,但是掘金的文章無法通過本地 Markd ...
  • Spring Security團隊正式宣佈Spring Security OAuth終止維護。 目前官網的主頁已經高亮提醒徹底停止維護。 舊的Spring Security OAuth項目終止到2.5.2.RELEASE版本,該項目將不會再進行任何的迭代,包括Bug修複,之前胖哥已經提醒該項目即將停 ...
  • AES(Advanced Encryption Standard) 是一種對稱加密演算法,是比 DES 更好的對稱加密演算法類。 使用AES,在前後端之間傳送密碼等相關數據時,能簡單高效的提高安全性。 前端的 AES(javascript/typescript) 前端的加密庫一般用 crypto-js。 ...
  • 背景 開發應用程式久了,總想刨根問底,尤其對一些有公共答案的問題。大家都能解釋,但是追根究底,都解釋不清。凡是都有為什麼,而且用數字說明問題是最直觀的。 本文主要想探究一下連接資料庫的細節,尤其是在 Web 應用中要使用資料庫來連接池,以免每次發送一次請求就重新建立一次連接。 對於這個問題,答案都是 ...
  • 1、static關鍵字簡介 static為java中的關鍵字,可以修飾類中的方法、變數,以及修飾靜態代碼塊 當用static修飾的方法和變數時可以直接通過類名.方法名和類名.變數名來訪問,不需要進行對象的實例化操作,方便在沒有創建對象的時候來調用方法或者變數 2、static修飾方法 static修 ...
  • 工作中遇到一個古老的程式,資料庫使用的事access,想用python批量導入數據,報“INSERT INTO 語句的語法錯誤”。但是,將插入語句放到access,正常通過,百思不得其解,無奈問度娘,有朋友說有關鍵字,如user,把他加上中括弧設置斷點,把sql【insert into [users ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...