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…