条形码是具有编码数据/信息的平行线、点或矩形形式的图像。行业专业人士使用条形码嵌入和访问产品信息、跟踪产品移动并跟上库存。在某些情况下,我们可能需要在 MS Word 文档中生成和添加条形码。 MS Word 是最流行和广泛使用的图形文字处理程序。它用于创建带有文本、图像或图形的新文档、编写专业品质的文章、编辑和格式化现有文档等。 DOCX 和 DOC 是流行的MS Word 支持的文件格式。在本文中,我们将学习如何使用 C# 以编程方式在 Word 文档中创建条形码。
本文将涵盖以下主题:
在 Word 文档中创建条形码的 C# API
为了生成条形码并将条形码图像添加到 Word 文档,我们将遵循两步过程。首先,我们将使用 Aspose.Words for .NET API 创建或加载 Word 文档,然后我们将使用 Aspose.BarCode for .NET API。 Aspose.Words for .NET API 的 Document 类允许在应用程序中创建新的 Word 文档或加载现有的 Word 文件。此类的 Save() 方法将文档保存在给定的文件路径上。 API 的 DocumentBuilder 类提供了构建文档的方法。它提供了各种重载的 InsertImage() 方法来在文档中插入图像。
Aspose.BarCode for .NET API 允许生成各种支持的条形码类型。为此,它提供了 BarcodeGenerator 类来生成指定 EncodeType 的条形码。我们可以使用该类的Save()方法保存生成的条码图像。 API 还提供 BarCodeImageFormat 枚举来指定保存格式。我们可以使用 API 的 BarCodeReader 类从图像中读取条形码。
PM> Install-Package Aspose.BarCode
PM> Install-Package Aspose.Words
在 C# 中生成条码并将其添加到 Word 文档
我们可以按照以下步骤创建一个新的 Word 文档并将条形码图像添加到文档中:
- 首先,创建 BarcodeGenerator 类的实例。它将 EncodeType 和文本编码为参数。
- 接下来,创建内存流对象的实例。
- 然后,调用 Save() 方法将条码图像保存到内存流中。
- 接下来,创建 Document 类的实例。
- 然后,使用 Document 对象初始化 DocumentBuilder 类的一个实例。
- 之后,使用流对象作为参数的 InsertImage() 方法插入条形码图像。
- 最后,调用 Save() 方法。它将输出 DOCX 文件路径作为参数。
下面的代码示例展示了如何使用 C# 生成条形码并将其添加到新的 Word 文档中。
// 此代码示例演示如何生成条形码图像并将其添加到 Word 文档。
// 文档目录的路径。
string dataDir = @"C:\Files\BarCode\";
// 实例化线性条码对象,设置条码的代码文本和符号类型
BarcodeGenerator generator = new BarcodeGenerator(EncodeTypes.Code39Standard, "1234567890");
// 创建内存流并将条码图像保存到内存流
Stream ms = new MemoryStream();
generator.Save(ms, BarCodeImageFormat.Bmp);
// 创建一个新的 Word 文档
Aspose.Words.Document doc = new Aspose.Words.Document();
// 为文档对象创建构建器
DocumentBuilder builder = new DocumentBuilder(doc);
// 将条形码图像插入文档
builder.InsertImage(ms);
// 保存word文档
doc.Save(dataDir + "Sample_out.docx");
在 C# 中将条码添加到现有 Word 文档
我们可以按照以下步骤生成条形码图像并将其添加到任何现有的 Word 文档中:
- 首先,使用 EncodeType 和文本创建 BarcodeGenerator 类的实例以编码为参数。
- 接下来,创建内存流对象的实例。
- 然后,调用 Save() 方法将条码图像保存到内存流中。
- 接下来,使用 Document 类加载现有的 Word 文档。
- 然后,使用 Document 对象初始化 DocumentBuilder 类的一个实例。
- 之后,使用流对象及其位置作为参数的 InsertImage() 方法插入条形码图像。
- 最后,调用 Save() 方法。它将输出 DOCX 文件路径作为参数。
以下代码示例演示如何使用 C# 生成条形码并将其添加到现有 Word 文档。
// 此代码示例演示如何生成条形码图像并将其添加到现有 Word 文档。
// 文档目录的路径。
string dataDir = @"C:\Files\BarCode\";
// 实例化线性条码对象,设置条码的代码文本和符号类型
BarcodeGenerator generator = new BarcodeGenerator(EncodeTypes.Codabar, "1234567890");
// 创建内存流并将条码图像保存到内存流
Stream ms = new MemoryStream();
generator.Save(ms, BarCodeImageFormat.Bmp);
// 创建一个新的 Word 文档
Document doc = new Document(dataDir + "sample.docx");
// 为文档对象创建构建器
DocumentBuilder builder = new DocumentBuilder(doc);
// 将条形码图像插入文档
builder.InsertImage(ms,
RelativeHorizontalPosition.Margin,
0,
RelativeVerticalPosition.Margin,
400,
200,
100,
WrapType.Square);
// 保存word文档
doc.Save(dataDir + "Sample_out.docx");
使用 C# 将 QR 码添加到 Word 文档
同样,我们也可以按照前面提到的步骤,生成二维码图片并添加到Word文档中。但是,我们只需在第一步中将 EncodeType 设置为 QR 或 GS1QR。我们可能还需要在步骤 6 中调整图像位置。
以下代码示例演示如何使用 C# 将 QR 码添加到 Word 文档。
// 此代码示例演示如何生成二维码并将其添加到现有 Word 文档。
// 文档目录的路径。
string dataDir = @"C:\Files\BarCode\";
// 实例化线性条码对象,设置条码的代码文本和符号类型
BarcodeGenerator generator = new BarcodeGenerator(EncodeTypes.QR, "1234567");
// 创建内存流并将条码图像保存到内存流
Stream ms = new MemoryStream();
generator.Save(ms, BarCodeImageFormat.Bmp);
// 创建一个新的 Word 文档
Document doc = new Document(dataDir + "sample.docx");
// 为文档对象创建构建器
DocumentBuilder builder = new DocumentBuilder(doc);
// 将条形码图像插入文档
builder.InsertImage(ms,
RelativeHorizontalPosition.Margin,
400,
RelativeVerticalPosition.Margin,
-50,
100,
100,
WrapType.Square);
// 保存word文档
doc.Save(dataDir + "Sample_qr_out.docx");
使用 C# 从 Word 文档中读取条形码
我们可以按照以下步骤识别 Word 文档任何页面上可用的任何条码图像:
- 首先,使用 Document 类加载现有的 Word 文档。
- 接下来,使用 GetChildNodes() 方法访问 Shape 类型的 NodeCollection。
- 然后,遍历所有形状并检查形状是否是图像。
- 接下来,将图像保存到流中。
- 然后,使用图像流和 DecodeType 作为参数创建 BarCodeReader 类的实例。
- 之后,调用ReadBarCodes()方法获取BarCodeResult对象。
- 最后,显示条码信息。
下面的代码示例展示了如何使用 C# 从 Word 文档中读取条形码图像。
// 此代码示例演示如何从 Word 文档中读取条形码。
// 文档目录的路径。
string dataDir = @"C:\Files\BarCode\";
// 加载word文档
Document wordDocument = new Document(dataDir + "sample_out.docx");
// 获取所有形状
NodeCollection shapes = wordDocument.GetChildNodes(NodeType.Shape, true);
// 循环遍历所有形状
foreach (Shape shape in shapes)
{
// 检查它是否有图像
if (shape.HasImage)
{
// 将图像保存在内存流中
MemoryStream imgStream = new MemoryStream();
shape.ImageData.Save(imgStream);
// 从上面的图像流中识别条形码
using (BarCodeReader reader = new BarCodeReader(new Bitmap(imgStream), DecodeType.Code39Standard))
{
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.WriteLine("Codetext found: " + result.CodeText + ", Symbology: " + result.CodeType);
}
}
}
}
Codetext found: 1234567890, Symbology: Code39Standard
获得免费许可证
您可以获得免费的临时许可证 试用该库而不受评估限制。
结论
在本文中,我们学习了如何:
- 以编程方式创建 Word 文档;
- 生成条形码图像并将其添加到 Word 文档中;
- 创建二维码并将其插入 Word 文档;
- 从 C# 中的 Word 文档中读取条形码图像。
此外,您可以使用 文档 了解更多关于 Aspose.BarCode for .NET API 的信息。如有任何歧义,请随时在 论坛 上与我们联系。