冰蓝科技
|
028-81705109
|
|
微信扫一扫
|

Spire.Cloud 纯前端文档控件

C#发送带PDF附件邮件的示意图

在 .NET 开发中,使用 C# 发送带附件的电子邮件是非常常见的需求,广泛应用于报表推送、合同传输、日志归档等业务场景。相比系统自带的基础邮件类库,开发者常常需要更灵活的方式来添加本地文件、内存流(MemoryStream)或字节数组作为邮件附件,并支持配置各类 SMTP 服务。

本文将通过实际示例,介绍如何在 C# 中实现发送带附件的邮件,涵盖磁盘文件、内存流、字节流等多种附件添加方式,并提供完整的配置流程。教程适用于 C# 控制台应用、ASP.NET 网站等多种 .NET 应用,帮助你快速掌握 C# 邮件发送与附件处理技巧。

目录

1. 邮件处理环境配置:Spire.Email 组件安装

Spire.Email for .NET 是一款专为 .NET 平台设计的邮件开发库,支持邮件的创建、发送、接收及管理。无需依赖客户端或其他外部工具,即可处理 SMTP、POP3 和 IMAP 协议,并支持附件、HTML 正文、内嵌资源等常见邮件功能。

安装方式

可通过 NuGet 安装:

Install-Package Spire.Email

也可以从官方页面下载 Spire.Email for .NET 并手动集成到项目中。

2. 用 C# 从本地磁盘添加附件发送邮件

在自动化报表分发、文档传输等场景中,邮件附件功能非常常见。本节展示如何将本地的 PDF 文件作为邮件附件发送。

主要流程包括:

  • 设置发件人、收件人地址
  • 创建带 HTML 格式的邮件正文
  • 使用 Attachment 类添加附件
  • 配置 SMTP 客户端并进行身份验证

以下是具体示例代码:

using Spire.Email;
using Spire.Email.Smtp;

class Program
{
    static void Main()
    {
        try
        {
            // 创建发件人、收件人和抄送人的地址对象
            MailAddress addressFrom = new MailAddress("user@yourcompany.com", "发件人");
            MailAddress addressTo = new MailAddress("recipient@yourcompany.com", "收件人");
            MailAddress addressCc = new MailAddress("copy@yourcompany.com", "抄送人");

            // 创建邮件对象并设置发件人和收件人地址
            MailMessage message = new MailMessage(addressFrom, addressTo);

            // 添加抄送人
            message.Cc.Add(addressCc);

            // 设置邮件主题和正文(中文格式)
            message.Subject = "2025年6月月度报告";

            message.BodyHtml =
                "<div style='font-family:Microsoft YaHei, sans-serif; font-size:14px; color:#333; line-height:1.8;'>" +
                "<p>尊敬的收件人:</p>" +
                "<p>&emsp;&emsp;您好!现将2025年6月的月度报告发送给您,详见附件 <strong style='color:#2E86C1;'>Sample.pdf</strong>。</p>" +
                "<p>&emsp;&emsp;如您在查阅过程中有任何疑问,欢迎随时与我联系。</p>" +
                "<p>&emsp;&emsp;感谢您的支持与配合!</p>" +
                "<p style='margin-top:30px;'>此致</p>" +
                "<p>敬礼!</p>" +
                "<p style='margin-top:20px;'>发件人</p>" +
                "<p>2025年6月26日</p>" +
                "</div>";

            // 添加附件
            string filePath = @"Sample.pdf";
            Attachment attachment = new Attachment(filePath);
            message.Attachments.Add(attachment);

            // 配置SMTP客户端
            SmtpClient smtp = new SmtpClient();
            smtp.Host = "smtp.yourcompany.com";     // SMTP服务器地址
            smtp.Port = 587;                         // SMTP端口
            smtp.Username = "your_username";         // 登录用户名
            smtp.Password = "your_password";         // 登录密码
            smtp.ConnectionProtocols = ConnectionProtocols.StartTls;

            // 发送邮件
            smtp.SendOne(message);
            Console.WriteLine("邮件发送成功。");
        }
        catch (Exception ex)
        {
            Console.WriteLine("邮件发送失败。");
            Console.WriteLine("错误信息: " + ex.Message);
        }
    }
}

以下为发送成功的邮件截图:

成功发送PDF附件邮件的效果图

你可能还感兴趣使用 C# 添加、提取及删除电子邮件附件

3. 从内存流或字节数组添加附件

在生成报表或图像等内容后,有时无需将文件写入磁盘,而是希望直接从内存发送附件。Spire.Email 支持通过 MemoryStreambyte[] 添加附件,适用于 Web API、自动化任务等场景。

从 MemoryStream 添加 PDF 文件

using System.IO;
using Spire.Email;

String filePath = @"Sample.pdf";
MemoryStream stream = new MemoryStream(File.ReadAllBytes(filePath));
Attachment attachment = new Attachment(stream, Path.GetFileName(filePath));
message.Attachments.Add(attachment);

从字节数组添加附件:

String filePath = @"Sample.pdf";
byte[] fileBytes = File.ReadAllBytes(filePath);
MemoryStream memStream = new MemoryStream(fileBytes);
Attachment imgAttachment = new Attachment(memStream, Path.GetFileName(filePath));
message.Attachments.Add(imgAttachment);

? 提示:通过 MemoryStreambyte[] 添加附件时,请确保为附件名添加正确的文件扩展名(如 .pdf、.xlsx 等),以确保能正确识别文件类型。

相关文章如何使用 C# 接受和保存邮件

4. 完整示例:发送个性化内容与附件的邮件

在实际项目中,常需批量发送包含个性化称呼、正文及多种附件的邮件。例如向多个客户发送不同的报表或通知。Spire.Email 提供灵活的 API 支持多收件人、动态内容生成、附件管理等复杂需求。

以下示例展示了如何向多个客户发送状态报告,包含个性化问候语,并附上 PDF 或 Excel 附件。

using Spire.Email;
using Spire.Email.Smtp;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // 定义发件人
        MailAddress addressFrom = new MailAddress("user@yourcompany.com", "发件人");

        // 定义收件人列表
        List<MailAddress> recipients = new List<MailAddress>
        {
            new MailAddress("sales@clientA.com", "收件人1"),
            new MailAddress("manager@clientB.com", "收件人2"),
            new MailAddress("support@clientC.com", "收件人3")
        };

        // 附件文件
        string[] attachmentFiles = { @"Sample.pdf", @"Sample.xlsx" };

        // 配置SMTP客户端
        SmtpClient smtp = new SmtpClient();
        smtp.Host = "smtp.yourcompany.com";
        smtp.Port = 587;
        smtp.Username = "your_username";
        smtp.Password = "your_password";
        smtp.ConnectionProtocols = ConnectionProtocols.StartTls;

        // 循环发送邮件
        foreach (var recipient in recipients)
        {
            try
            {
                // 为每个收件人创建邮件
                MailMessage message = new MailMessage(addressFrom, recipient);
                message.Subject = "2025年第二季度项目进展报告";

                // 中文称呼
                string displayName = string.IsNullOrEmpty(recipient.DisplayName) ? "收件人" : recipient.DisplayName;

                // 设置邮件正文
                message.BodyHtml = $@"
                    <div style='font-family:Microsoft YaHei, sans-serif; font-size:14px; color:#333; line-height:1.8;'>
                        <p>{displayName}:</p>

                        <p>&emsp;&emsp;您好!附件为2025年第二季度项目进展报告,内容包括:</p>
                        <ul style='padding-left:20px;'>
                            <li>已完成的里程碑</li>
                            <li>待完成的任务</li>
                            <li>关键发现与分析</li>
                        </ul>

                        <p>&emsp;&emsp;如您有任何疑问,欢迎随时联系我,我们也可安排时间进一步沟通。</p>

                        <p style='margin-top:30px;'>此致</p>
                        <p>敬礼!</p>

                        <p style='margin-top:20px;'>发件人</p>
                        <p>2025年6月26日</p>
                    </div>";

                // 添加多个附件
                foreach (string file in attachmentFiles)
                {
                    Attachment attachment = new Attachment(file);
                    message.Attachments.Add(attachment);
                }

                // 发送邮件
                smtp.SendOne(message);
                Console.WriteLine($"邮件已发送至:{recipient.Address}");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"发送到 {recipient.Address} 失败。");
                Console.WriteLine("错误信息: " + ex.Message);
            }
        }
    }
}

此代码适用于 C# 控制台应用ASP.NET 应用 或任何需要发送邮件功能的 .NET 项目。

生成的邮件效果如下图所示:

个性化邮件示意图

5. 常见错误与解决方法

  • SMTP 登录失败:检查用户名、密码、端口号及加密协议设置是否正确
  • 端口被限制:建议使用端口 587(TLS)或 465(SSL)
  • 附件体积过大:可压缩文件或限制大小
  • 账号安全性:避免将敏感信息硬编码,推荐使用配置文件或环境变量
  • 文件类型识别失败:通过内存流添加附件时,确保文件名包含后缀名

6. 总结

本文详细介绍了如何在 C# 中使用 Spire.Email 发送带附件的邮件,包括基本邮件构建、从内存中添加附件、配置 SMTP 服务以及动态批量发送的应用场景。Spire.Email 提供清晰易用的 API,非常适合各类 .NET 项目集成邮件功能。

你可以 联系销售申请免费临时授权,将 Spire.Email 集成到实际项目中试用。

7. 常见问题解答(FAQ)

❓ 如何在 C# 中添加邮件附件?

通过 Spire.Email 的 Attachment 类即可:

message.Attachments.Add(new Attachment(@"file.pdf"));

若文件内容存在于内存中,也可以使用 MemoryStream 或字节数组添加。

❓ 如何发送包含附件的邮件?

在添加附件后,调用 SmtpClient.SendOne() 方法即可发送,注意确保 SMTP 设置正确无误。

❓ 是否支持 .NET Core?

支持。Spire.Email for .NET 兼容 .NET Core.NET Framework.NET 5+.NET StandardASP.NETMonoAndroidXamarin.iOS,同时支持 C# 和 VB.NET 开发。

❓ 如何发送带 Excel 文件的邮件?

操作方式与其他文件相同,直接添加即可:

message.Attachments.Add(new Attachment(@"report.xlsx"));

请确认文件路径正确,并且文件已生成或可访问。

Spire.Doc for Python 13.6.4 现已正式发布。该版本主要新增了一个功能,即开发或测试授权支持解除绑定。详情请查阅以下内容。

新功能:


获取 Spire.Doc for Python 13.6.4 请点击:

Spire.Doc for Python 下载页面

Spire.Presentation 10.6.4 现已正式发布。最新版本增强了从 PowerPoint 演示文稿到 PDF 的转换功能。此外,最新版本还修复了 slide 转 SVG ,shape 效果不正确的问题。更多详情请查阅下列内容。

问题修复:


获取 Spire.Presentation 10.6.4,请点击:

Spire.Presentation for .NET 下载页面

Spire.Doc for Java 13.6.2 现已正式发布。该版本新增对图表标题、数据标签、坐标轴、图例、数据表等格式的读取与设置,优化了表格格式的读取设置功能,并提升了Word 转PDF 的转换性能,在处理大文件或复杂布局时内存使用效率更高。同时,该版本还修复了目录域更新失败、SVG 转换参数无效、文档比较出错等多个问题。详情请阅读以下内容。

新功能:

问题修复:


获取 Spire.Doc for Java 13.6.2 请点击:

Spire.Doc for Java 下载页面

Spire.DocViewer 8.9.1 现已发布,该版本主要提高了文档在WPF应用中的展示效果。具体更新如下。

问题修复:


获取 Spire.DocViewer 8.9.1 请点击:

Spire.DocViewer for .NET 下载页面

Spire.PDF 11.6.14 现已正式发布。该版本增强了PDF到Excel、Markdown和图片的转换,并成功修复了一些在设置字体和绘制阿拉伯文本时出现的问题。详情请查阅以下内容。

问题修复:


获取Spire.PDF 11.6.14,请点击:

Spire.PDF for .NET 下载页面

Spire.XLS 15.6.6 现已正式发布。最新版本支持 SHEETS 函数。此外,一些已知问题也在本次更新时被成功修复,例如 AutoFitColumns效果不正确的问题。详情请查阅下面的内容。

新功能:

问题修复:


下载S Spire.XLS 15.6.6,请点击:

下载 Spire.XLS 15.6.6

使用 Spire.PDF 库在 Python 中读取 PDF 文件

在 Python 中读取 PDF 文档是实现文档自动化、内容分析和数据提取的基础操作之一。无论你处理的是合同、报告、发票,还是科研论文,能够通过代码访问 PDF 内容,不仅能节省时间,还能带来更高效的处理流程。

要在 Python 中准确提取 PDF 的文本、表格、图像和元数据,一个稳定、功能完善的 PDF 操作库是关键。本文将介绍如何使用 Spire.PDF for Python 实现用 Python 读取 PDF 文档。该库提供简单易用、功能强大的API,无需依赖第三方工具。

目录

配置 Python 读取 PDF 开发环境

Spire.PDF for Python 是一款功能全面的 PDF 读取库,支持通过 Python 代码提取 PDF 中的文本、表格、图像和文档信息。其主要特点包括:

  • 支持从磁盘或内存加载 PDF
  • 可读取文本、表格、图像和元数据
  • 无需依赖外部工具
  • 对结构化数据的识别精准
  • 提供免费版本供试用

非常适合希望快速集成 PDF 数据读取功能的开发者。

使用 pip 安装 Spire.PDF for Python

pip install spire.pdf

或安装适用于轻量任务的 Free Spire.PDF for Python

pip install spire.pdf.free

在 Python 中加载 PDF 文档

在读取 PDF 内容之前,需先将其加载到内存中。Spire.PDF 支持从文件路径或内存字节流加载文档,非常适用于处理网页上传或 API 返回的 PDF 数据。

从文件路径加载

使用 PdfDocument.LoadFromFile() 方法从本地读取 PDF 文件:

from spire.pdf import PdfDocument

# 创建一个 PdfDocument 实例
pdf = PdfDocument()
# 加载一个 PDF 文档
pdf.LoadFromFile("sample.pdf")

从内存字节加载

如果不希望将文件保存到磁盘,可以先读取字节数据,并使用 Stream 对象加载:

from spire.pdf import PdfDocument, Stream

# 将 PDF 文件读取为字节数组
with open("sample.pdf", "rb") as f:
    byte_data = f.read()
    
# 使用字节数组创建一个流对象
pdfStream = Stream(byte_data)
# 使用流对象创建一个 PdfDocument 实例
pdf = PdfDocument(pdfStream)

更多参考通过字节流加载和保存 PDF

用 Python 读取 PDF 中的文本

提取 PDF 中的文本内容是最常见的需求之一。Spire.PDF 提供简单方法,可获取整篇文档或指定页面中的所有可见文本。

读取 PDF 文档所有文本

遍历每一页,使用 PdfTextExtractor.ExtractText() 提取内容:

from spire.pdf import PdfDocument, PdfTextExtractor, PdfTextExtractOptions

# 创建一个 PdfDocument 实例
pdf = PdfDocument()
# 加载一个 PDF 文档
pdf.LoadFromFile("sample.pdf")

all_text = ""
# 遍历每一页
for pageIndex in range(pdf.Pages.Count):
    page = pdf.Pages.get_Item(pageIndex)
    # 创建一个 PdfTextExtractor 实例
    text_extractor = PdfTextExtractor(page)
    # 配置提取选项
    options = PdfTextExtractOptions()
    options.IsExtractAllText = True
    options.IsSimpleExtraction = True
    # 从当前页面提取文本
    all_text += text_extractor.ExtractText(options)

# 打印提取到的全部文本
print(all_text)

Python 提取 PDF 所有文本示例

提取 PDF 页面指定区域的文本

如只需获取页面中某一特定区域的文本,可通过设置坐标区域实现:

from spire.pdf import RectangleF, PdfDocument, PdfTextExtractor, PdfTextExtractOptions

# 加载 PDF 文件
pdf = PdfDocument()
pdf.LoadFromFile("sample.pdf")

# 获取第一页
page = pdf.Pages.get_Item(0)
# 创建一个 PdfTextExtractor 实例
textExtractor = PdfTextExtractor(page)
# 设置提取区域,通过配置 PdfTextExtractOptions
options = PdfTextExtractOptions()
area = RectangleF.FromLTRB(0, 200, page.Size.Width, 270)  # x, y, width, height
options.ExtractArea = area
options.IsSimpleExtraction = True

# 从指定区域提取文本
text = textExtractor.ExtractText(options)
print(text)

Python 从特定 PDF 页面区域提取文本示例

用 Python 读取 PDF 表格数据

PDF 中的表格广泛用于财务、账单等场景。借助 Spire.PDF 提供的表格提取器,你可以精准读取页面中的表格内容。

from spire.pdf import PdfDocument, PdfTableExtractor

# 加载 PDF 文件
pdf = PdfDocument()
pdf.LoadFromFile("sample.pdf")

# 创建一个 PdfTableExtractor 实例
table_extractor = PdfTableExtractor(pdf)
# 从第一页提取表格
tables = table_extractor.ExtractTable(0)
for table in tables:
    # 获取行数和列数
    row_count = table.GetRowCount()
    column_count = table.GetColumnCount()
    # 遍历每一行
    for i in range(row_count):
        table_row = []
        # 遍历每一列
        for j in range(column_count):
            # 获取单元格文本
            cell_text = table.GetText(i, j)
            table_row.append(cell_text)
        print(table_row)

PDF 表格提取效果图 Python

相关文章在 Python 中使用 OCR 识别图像中的文本

用 Python 提取 PDF 中的图像

PDF 文件常含有徽标、插图或扫描图像。Spire.PDF 支持提取并保存这些嵌入图像,方便后续使用或归档。

from spire.pdf import PdfDocument, PdfImageHelper

# 加载 PDF 文件
pdf = PdfDocument()
pdf.LoadFromFile("sample.pdf")

# 获取第一页
page = pdf.Pages.get_Item(0)

# 创建一个 PdfImageHelper 对象
image_helper = PdfImageHelper()
# 获取页面上的图像信息
images_info = image_helper.GetImagesInfo(page)
# 将页面中的图像保存为图像文件
for i in range(len(images_info)):
    images_info[i].Image.Save("output/Images/image" + str(i) + ".png")

Python 提取 PDF 图像效果图

获取 PDF 元数据(标题、作者等)

你可以通过 Spire.PDF 获取文档的元数据信息,如标题、作者、主题和关键词等,有助于文档管理与归档。

from spire.pdf import PdfDocument

# 加载 PDF 文件
pdf = PdfDocument()
pdf.LoadFromFile("sample.pdf")

# 获取文档属性
properties = pdf.DocumentInformation
print("标题: " + properties.Title)
print("作者: " + properties.Author)
print("主题: " + properties.Subject)
print("关键词: " + properties.Keywords)

使用 Python 获取 PDF 元数据示例

常见问题答疑

Python 能读取 PDF 文件吗?

可以。Spire.PDF for Python 提供了读取文本、提取表格、图像和元数据的完整 API,支持结构化内容的精准解析。

能在 Jupyter Notebook 中使用 Spire.PDF 吗?

当然可以。只需通过 pip 安装,就能在 Jupyter Notebook 中调用 API 读取 PDF 文件、提取文本与图像等内容。

如何提取 PDF 文本?

加载文档后,使用 PdfTextExtractor.ExtractText() 方法遍历每一页即可提取所有可见文本。

可以不保存文件直接读取 PDF 吗?

可以。通过 LoadFromStream() 方法可直接读取字节数据,非常适合处理网页上传或接口返回的临时文件。

总结

借助 Spire.PDF for Python,你可以轻松完成 PDF 文件的读取和处理任务,包括文本、表格、图像和元数据的提取,还可将 PDF 转换为可分析的文本内容,是实现数据采集与文档自动化的理想方案。

如需处理更大的 PDF 文件或解锁更多 PDF 操作,联系销售申请免费授权,充分利用 Spire.PDF for Python 的全部能力!

C# 从 PDF 中读取条码概览图

在 PDF 文档的 .NET 平台处理流程中,使用 C# 读取 PDF 条码 是一项常见需求,特别适用于处理扫描件或电子表单。无论是物流、金融、医疗还是制造行业,PDF 文档中经常包含用于追踪或识别的条码。这些条码可能是嵌入图像,也可能是矢量绘制图形。通过自动识别,可显著减少人工操作并提升数据处理效率。

本文将介绍两种方法,讲述如何使用 C# 从 PDF 中提取条码信息:一种是提取 PDF 页面中的嵌入图片后识别条码,另一种是将整个页面渲染为图像再进行识别。这两种方法都支持识别多种 1D 和 2D 条码类型。

文章目录

✅ 环境准备

要在 C# 中实现 PDF 条码识别功能,你需要以下工具:

  • 支持 NuGet 包的 C# 项目环境(如 .NET Framework、.NET Core 或 .NET)。
  • 安装两个核心组件:Spire.Barcode for .NET(用于条码识别)和 Spire.PDF for .NET(用于 PDF 处理)。

通过 NuGet 安装命令如下:

Install-Package Spire.Barcode
Install-Package Spire.PDF

如何在 C# 中读取 PDF 条码

下面将介绍两种方式从 PDF 中提取条码数据,可根据 PDF 文件中条码的具体类型选择合适的方法。

方法一:提取 PDF 图片并识别条码

适用于扫描类 PDF,通常每一页都包含条码图像。可通过 BarcodeScanner.ScanOne() 方法读取单个图像中的一个条码。

示例代码:

using Spire.Barcode;
using Spire.Pdf;
using Spire.Pdf.Utilities;
using System.Drawing;

namespace ReadPDFBarcodeByExtracting
{
    class Program
    {
        static void Main(string[] args)
        {
            // 载入PDF文件
            PdfDocument pdf = new PdfDocument();
            pdf.LoadFromFile("Sample.pdf");

            // 获取页面图片信息
            PdfPageBase page = pdf.Pages[0];
            PdfImageHelper imageHelper = new PdfImageHelper();
            PdfImageInfo[] imagesInfo = imageHelper.GetImagesInfo(page);

            // 遍历页面图片并读取条码信息
            int index = 0;
            foreach (PdfImageInfo imageInfo in imagesInfo)
            {
                Image image = imageInfo.Image;
                string scanResult = BarcodeScanner.ScanOne((Bitmap)image);
                Console.WriteLine($"第 {index + 1} 个图像的扫描结果:\n" + scanResult + "\n");
                index++;
            }
        }
    }
}

以下图像展示了 PDF 页面截图与条码识别结果:

C# 提取 PDF 中嵌入图片并识别条码信息

适用场景:PDF 是扫描件或条码以图像形式嵌入时。

你可能感兴趣:C# 生成二维码教程

方法二:保存 PDF 页面为图像并识别条码

当条码是通过矢量方式绘制在 PDF 页面上(而非图片)时,可将页面渲染为图像,再识别其中的条码。此时使用 BarcodeScanner.Scan() 方法可识别多个条码。

示例代码:

using Spire.Barcode;
using Spire.Pdf;
using System.Drawing;

namespace ReadPDFBarcodeByExtracting
{
    class Program
    {
        static void Main(string[] args)
        {
            // 载入PDF文件
            PdfDocument pdf = new PdfDocument();
            pdf.LoadFromFile("Sample.pdf");

            // 遍历文档页面并保存页面为图像
            for (int i = 0; i < pdf.Pages.Count; i++)
            {
                Image image = pdf.SaveAsImage(i);
                // 扫描识别图像中的所有二维码信息
                string[] scanResults = BarcodeScanner.Scan((Bitmap)image);
                for (int j = 0; j < scanResults.Length; j++)
                {
                    Console.WriteLine($"第 {i + 1} 页第 {j + 1} 个条码扫描结果:\n" + scanResults[j] + "\n");
                }
            }
        }
    }
}

下面展示的是使用方法二识别 PDF 页面中矢量条码的效果:

C# 保存 PDF 页面为图片并识别条码

适用场景:条码是以绘图形式嵌入页面,而非图片。

相关阅读:C# 将 PDF 页面转换为图片

如何根据应用场景选择方法

PDF 文件来源多为扫描件或在线系统生成,条码既可能作为图像嵌入,也可能直接绘制在页面中,推荐根据实际情况灵活选择方法。建议在不确定文档结构时结合两种方法使用,以提升识别成功率。

使用场景 推荐方法
扫描件或图像式条码 提取嵌入图片并识别
数字 PDF、矢量绘制条码 渲染整页图像再识别
混合内容或不确定结构 可尝试结合两种方法使用

✅ 总结

通过本教程,你可以使用 C# 从 PDF 中提取条码信息,无论条码是图像嵌入还是矢量绘制,两种方法都能为你提供稳定的识别结果。在数据自动化处理场景中,这将大幅提升效率与准确性。

❓ 常见问题解答

问:支持多页 PDF 吗?
答:支持。你可以循环处理 PDF 中的每一页,逐页识别条码。

问:能否识别每页多个条码?
答:可以。使用 BarcodeScanner.Scan() 方法可返回图像中所有检测到的条码。

问:提高识别精度的方法有哪些?
答:渲染页面时可设置更高 DPI,例如使用 SaveAsImage(int pageIndex, PdfImageType.Bitmap, int dpiX, int dpiY) 方法,推荐 300 DPI 以上。

问:是否可以免费使用?
答:可以。你可使用 Free Spire.Barcode for .NETFree Spire.PDF for .NET 来实现基本的 PDF 条码识别功能。但免费版本可能存在页数限制或条码类型限制。如需完整功能,可 申请免费试用授权

Spire.PDF for Java 11.6.2 已发布。本次更新增强了 PDF 到 PDFA3B 和 PDFA1A,以及 OFD 到 PDF 的转换功能。此外,一些已知问题也在该版本中成功修复,如替换文本,字体不正确的问题。详情请阅读以下内容。

问题修复:


获取 Spire.PDF for Java 11.6.2 请点击:

https://www.e-iceblue.cn/Downloads/Spire-PDF-JAVA.html