文檔處理控件TX Text Control系列教程:使用 C# .NET 將二維碼添加到 PDF 文檔

PDF 文檔通常是合同、發票、證書和報告的最終格式。盡管它們在設計上是靜態的,但用戶現在希望能夠與它們交互、驗證信息并直接從這些文件訪問數字服務。這時,二維碼就變得至關重要。

PDF文檔中的二維碼

PDF 文檔中的二維碼將印刷或數字內容與動態在線體驗連接起來。用戶只需掃描二維碼即可驗證文檔、打開相關網站、訪問客戶門戶或繼續工作流程。在打印和共享文檔的環境中,二維碼可確保數字連接保持完整。

添加二維碼還能為物流和文檔管理帶來益處。例如,送貨單、采購訂單和訪客通行證可以包含可掃描的嵌入式信息。這使得公司能夠實現流程自動化并改進追蹤。在醫療保健和法律等行業,二維碼可以驗證真實性,并在不改變原始文檔布局的情況下引導用戶查看補充說明。

TX Text Control?提供兩種在 PDF 文檔中嵌入二維碼的主要方法。您可以使用 API 以編程方式添加二維碼,也可以創建帶有二維碼占位符的模板,并將其與 JSON 文件中的數據合并。根據具體應用,這兩種方法都提供了靈活性,可以滿足不同的需求。

TX Text Control 官方試用版最新下載

以編程方式添加二維碼

使用?TX Text Control?中的條形碼對象,開發人員可以直接創建二維碼并將其插入文檔。此方法可以完全控制二維碼的位置、大小和內容。

先決條件

您需要下載并安裝 TX Text Control .NET Server for ASP.NET 的試用版:

  • 下載試用版
    安裝程序需要下載和安裝。

創建應用程序

確保您下載了.NET 8 SDK附帶的最新版本的 Visual Studio 2022 。

  1. 在 Visual Studio 2022 中,選擇“創建新項目” 來創建新項目

  2. 選擇Console App作為項目模板并單擊Next確認。

  3. 輸入項目名稱并選擇保存項目的位置。單擊“下一步”確認。

  4. 選擇.NET 8.0(長期支持)作為框架

  5. 啟用啟用容器支持復選框并選擇Linux作為容器操作系統

  6. 選擇Dockerfile作為容器構建類型選項,并通過創建進行確認。

    創建 .NET 8 項目

添加 NuGet 包
  1. 在解決方案資源管理器中,選擇您創建的項目,然后從項目主菜單中選擇“管理 NuGet 包...”。選擇“文本控制離線包”作為包源

    安裝以下軟件包:

    • TXTextControl.TextControl.Core.SDK

    ASP.NET Core Web 應用程序

使用 ServerTextControl
  1. 解決方案資源管理器中找到Program.cs文件,并將代碼替換為以下代碼片段:

	using TXTextControl;
using TXTextControl.Barcode;
using TXTextControl.DataVisualization;
using System.Drawing;// Create a new ServerTextControl instance for server-side document generation
using var tx = new ServerTextControl();// Initialize a new, empty document
tx.Create();// The text to be encoded in the QR code
var barCodeText = "https://www.textcontrol.com";// Create the barcode core with type QR code and set the encoded text
var barcodeCore = new TXBarcodeCore
{BarcodeType = BarcodeType.QRCode,Text = barCodeText,UpperTextLength = barCodeText.Length // Optional visual setting
};// Create a frame for the barcode and define its visual size
var barcodeFrame = new BarcodeFrame(barcodeCore)
{Size = new Size(5000, 5000) 
};// Add the barcode to the document at the end (-1 means current input position)
tx.Barcodes.Add(barcodeFrame, -1);// Save the document as a PDF
tx.Save("results.pdf", StreamType.AdobePDF);
  1. 現在運行在 Docker 容器中運行應用程序的項目。

這將創建一個 PDF 文檔,其中嵌入了指向給定網站的二維碼。

使用郵件合并

在許多商業應用中,將文檔的設計與數據分離至關重要。TX Text Control?允許模板包含二維碼占位符,這些占位符會在合并過程中填充動態內容。使用 TX Text Control 的編輯器可視化地設計這些模板。添加二維碼占位符并為其命名。

在文檔生成過程中,應用程序會加載模板并將其與 JSON 數據文件合并。JSON 對象中的值會自動應用于二維碼占位符。此方法非常適合批量處理任務,例如生成證書、會員卡或發票,這些任務中每個文檔都需要唯一的二維碼,但布局保持不變。

現在,我們來看一下開頭截圖中顯示的裝箱單示例。

PDF文檔中的二維碼

使用?TX Text Control?的郵件合并?引擎創建此裝箱單非常簡單。首先,如下所示,我們需要一個數據源,例如 JSON 對象。

	[{"packing_slip_guid": "12345678-1234-1234-1234-123456789012","dispatch_date": "2024-01-01","recipient": {"id": 1,"name": "John Doe","company": "Company A","address": {"street": "123 Main St","city": "Anytown","state": "CA","zip": "12345"}},"product": {"product_id": 1,"name": "Product 1","qty": "Product 1 Description","code": "123456789012"},"items": [{"item_id": 1,"name": "Item 1","description": "Description 1","quantity": 1,"price": 100,"upc": "12345678901"},{"item_id": 2,"name": "Item 2","description": "Description 2","quantity": 2,"price": 200,"upc": "12345678902"},{"item_id": 3,"name": "Item 3","description": "Description 3","quantity": 3,"price": 300,"upc": "12345678903"},[...]]}
]

我們需要一個包含合并字段和條形碼的模板文檔。合并字段將使用來自數據源的數據填充,條形碼將基于相同的數據生成。下方屏幕截圖顯示了?TX Text Control?的所見即所得 (WYSIWYG) 文檔編輯器中準備好的模板,該編輯器可以無縫集成到您的應用程序中。

帶有 QR 碼占位符的模板

條形碼可以鏈接到數據源字段,以便在最終文檔生成期間自動使用正確的值進行更新。

帶有 QR 碼占位符的模板

此代碼演示了如何使用?TX Text Control?的 MailMerge 類將動態 JSON 數據合并到預先設計的模板中來生成 PDF 文檔。

using TXTextControl;
using TXTextControl.DocumentServer;
using System.IO;// Create a new ServerTextControl instance for document processing
using var tx = new ServerTextControl();// Create a new, empty document
tx.Create();// Load the template document in TX Text Control's internal format
tx.Load("packing_slip.tx", StreamType.InternalUnicodeFormat);// Initialize the MailMerge component with the loaded document
var mailMerge = new MailMerge
{TextComponent = tx
};// Load JSON data from file
var jsonData = File.ReadAllText("data.json");// Merge the JSON data into the template
mailMerge.MergeJsonData(jsonData);// Save the merged document as a PDF
tx.Save("output.pdf", StreamType.AdobePDF);
結論

使用?TX Text Control,將二維碼添加到 PDF 文檔非常簡單。無論您是通過編程方式生成二維碼,還是結合模板使用郵件合并功能,該 API 的靈活性都讓您能夠創建動態的交互式文檔,從而提升用戶體驗并簡化工作流程。

二維碼和條形碼在各種文檔或 PDF 中都非常有用,它們提供了一種便捷的方式,可以訪問信息、驗證真偽、追蹤物品并增強用戶交互。本文介紹如何使用?TX Text Control .NET Server for ASP.NET?在 .NET C# 中創建帶有二維碼和條形碼的文檔。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/90053.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/90053.shtml
英文地址,請注明出處:http://en.pswp.cn/web/90053.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Google Chrome 谷歌瀏覽器全部版本集合

Google Chrome 谷歌瀏覽器全部版本集合 Collection of all software versions of Google Chrome. 項目介紹 本項目為Google Chrome谷歌瀏覽器的全部版本集合,方便大家下載舊版本使用。 因為Gitee項目限制倉庫1G大小,所以許多谷歌瀏覽器版本無法上傳。…

論文略讀:Towards Safer Large Language Models through Machine Unlearning

ACL 2024大型語言模型(LLMs)的迅猛發展展現了其在多個領域的巨大潛力,這主要得益于其廣泛的預訓練知識和出色的泛化能力。然而,當面對問題性提示(problematic prompts)時,LLMs 仍然容易生成有害…

深度學習 ---參數初始化以及損失函數

深度學習 —參數初始化以及損失函數 文章目錄深度學習 ---參數初始化以及損失函數一,參數初始化1.1 固定值初始化1.1.1 全0初始化1.1.2 全1初始化1.3 任意常數初始化1.2 隨機初始化一,參數初始化 神經網絡的參數初始化是訓練深度學習模型的關鍵步驟之一…

JS--M端事件

移動端(Mobile 端,簡稱 M 端)開發中,由于設備特性(觸摸屏、手勢操作等),需要處理一些與桌面端不同的事件。這些事件主要針對觸摸交互、手勢識別等場景 一、觸摸事件(Touch Events&am…

Linux網絡編程-tcp

tcp、udp對比:UDP1. 特點無連接:無需建立連接即可發送數據。不可靠:不保證數據順序或完整性。低延遲:適合實時性要求高的場景。2. 應用場景視頻/音頻流傳輸(如直播)。DNS 查詢、在線游戲。TCP1. 特點面向連…

記一次flink資源使用優化

一.現狀分析 現有任務的資源配置如下,根據ui監控中Garbage Collection可以發現,此任務頻繁的發生GC,且老年代GC時間較久二.整體memory使用分析如下Framework Heap(框架堆內存)用于Flink框架自身的堆內存(如…

Vue底層換成啥了?如何更新DOM的?

摘要:之前的vue是使用虛擬 DOM的,但是Vue 3.6 帶來了一個意義重大的更新: Vapor Mode 渲染模式。Vue 渲染策略的演進: Vue 1.x: 基于模板渲染策略,直接將模板轉換為DOM元素,并為每個DOM元素創建…

0722 數據結構順序表

Part 1.順序表的代碼一.順序表的內存申請head.h: typedef int datatype;typedef struct sqlist {//數據元素datatype data[MAXSIZE];//順序表長度int len;}*sqlist; //*sqlist的作用: //sqlist:struct Sqlist * sqlist create();head.c: sqlist create() {sqlist list (sqlist)…

為何在 Vue 的 v-model 指令中不能使用可選鏈(Optional Chaining)?

Vue 的 v-model 是實現組件與數據雙向綁定的核心指令之一,它本質上是一個語法糖,用于簡化對表單元素和組件 props 的同步更新。然而,在 Vue 3(以及 Vue 2 的某些模式下),開發者嘗試在 v-model 中使用 JavaS…

基于單片機智能藥盒/智能藥箱/定時吃藥系統

傳送門 👉👉👉👉其他作品題目速選一覽表 👉👉👉👉其他作品題目功能速覽 概述 本設計實現了一種基于單片機的智能藥盒,系統以微控制器(如STM32&#xff…

(25)python+playwright自動化處理單選和多選按鈕-中

1.簡介上一篇中講解和介紹的單選框有點多,而且由于時間的關系,決定今天講解和分享復選框的相關知識。2.什么是單選框、復選框?單選按鈕一般叫raido button,就像我們在電子版的單選答題過程一樣,單選只能點擊一次&#…

Nginx IP授權頁面實現步驟

目標:一、創建白名單文件sudo mkdir -p /usr/local/nginx/conf/whitelist sudo touch /usr/local/nginx/conf/whitelist/temporary.conf二、創建Python認證服務文件路徑:/opt/script/auth_server.pyimport os import time from flask import Flask, requ…

2025年7月中科院一區-向光生長優化算法Phototropic growth algorithm-附Matlab免費代碼

引言 本期介紹一種新的元啟發式算法——向光生長優化算法Phototropic growth algorithm,PGA。靈感來自植物細胞在陽光下的生長模式。于2025年7月最新發表在JCR 1區,中科院1區 SCI 期刊 Knowledge-Based Systems。 該算法將生物學啟發的確定性生長行為與…

poi-excel-添加水印

1、官網快速指南 https://poi.apache.org/components/spreadsheet/quick-guide.html 訪問如上地址可以查看到poi的相關操作方式: How to create a new workbookHow to create a sheetHow to create cellsHow to create date cellsWorking with different types of…

STM32 開發的鼠標:技術詳解與實現指南

概述基于STM32微控制器開發的鼠標是一種高度可定化的輸入設備解決方案,廣泛應用于工業控制、嵌入式系統、特殊人機交互等領域。相比傳統鼠標,STM32鼠標具有以下優勢:高度可定制性:可添加特殊功能按鍵、傳感器集成低功耗設計&#…

GoLang教程007:打印空心金字塔

4.6 案例一&#xff1a;打印金字塔編寫一個程序&#xff0c;可以接收一個整數&#xff0c;表示層數&#xff0c;打印出金字塔。1??第一步&#xff1a;打印一個矩形 package mainimport "fmt"func main() {// i表示層數for i : 1; i < 3; i {// j表示每層打印多少…

iOS開發 Swift 速記3:運算符與控制結構

初級代碼游戲的專欄介紹與文章目錄-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代碼都將會位于ctfc庫中。已經放入庫中我會指出在庫中的位置。 這些代碼大部分以Linux為目標但部分代碼是純C的&#xff0c;可以在任何平臺上使用。 源碼指引&#xff1a;github源…

ElasticSearch中需要注意的點,附官方文檔解讀

1.批量更新數量大小限制 https://www.elastic.co/guide/cn/elasticsearch/guide/current/bulk.html#_How_Big_Is_Too_Big 整個批量請求都需要由接收到請求的節點加載到內存中&#xff0c;因此該請求越大&#xff0c;其他請求所能獲得的內存就越少。批量請求的大小有一個最佳值…

Git GitHub精通:前端協作開發的“瑞士軍刀“!

前言&#xff1a;為什么你的代碼總是"失蹤"&#xff1f; "啊&#xff01;我的代碼呢&#xff1f;"——這可能是每個程序員都曾發出過的靈魂吶喊。還記得上周我熬夜寫的300行JavaScript&#xff0c;第二天醒來發現被自己手賤覆蓋了&#xff0c;那一刻我深刻…

第 30 場 藍橋·算法入門賽 題解

1. 零食爭議【算法賽】 簽到題&#xff1a;1-7奇數相加 #include <bits/stdc.h> using namespace std; int main() {// 請在此輸入您的代碼cout<<1357;return 0; } 2. 數字炸彈【算法賽】 把n個人看為前n-1和后n-1 &#xff0c; 方便找到是第幾段的第幾個數 #in…