Spire.Pdf全解析:.NET平台PDF处理组件

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:Spire.Pdf是一款全方位的.NET PDF处理库,支持在.NET框架下创建、编辑、阅读和转换PDF文档。本文详细解析了该组件的功能,包括PDF的创建与编辑、阅读与显示、安全性增强、表单处理、高级图像处理、书签与超链接管理、数字签名以及PDF/A兼容性等功能。 spire.pdf4.8

1. Spire.Pdf功能介绍

1.1 Spire.Pdf概述

Spire.Pdf是一个功能强大的PDF处理库,它支持多种编程语言,允许开发者在应用程序中实现PDF文件的创建、编辑、加密、打印以及图像处理等功能。Spire.Pdf旨在为用户提供简单易用的API,以便轻松集成到各种企业级解决方案中。

1.2 Spire.Pdf的应用场景

Spire.Pdf广泛应用于商业文档管理、自动化办公、在线教育、电子票据生成以及数字化存档等多个领域。其强大的功能可以满足从生成标准文档到处理复杂的PDF布局的各种需求。

1.3 Spire.Pdf的优势

相比其他PDF处理库,Spire.Pdf的优势在于其高度的灵活性和强大的兼容性。它支持多种PDF操作,包括但不限于文本、图像、图形以及书签管理,并且能够处理加密的PDF文件。此外,Spire.Pdf还提供对PDF/A标准的支持,便于进行长期的电子文档存储和交换。

以上内容对Spire.Pdf做了基本的介绍,概述了其主要特点、应用场景以及优势。接下来的章节将深入探讨Spire.Pdf的具体功能及其应用方法。

2. PDF文档创建与编辑操作

2.1 Spire.Pdf的文档创建功能

2.1.1 创建PDF文件的基本步骤

创建PDF文件是使用Spire.Pdf库的最基本功能之一。首先,需要引入必要的命名空间,并创建一个PdfDocument类的实例。接着,通过添加新页(PdfPageBase)并对其配置,如设置尺寸、边距等,然后可以将各种元素(例如文本、图形、图像等)添加到PDF页面上。最后,通过保存操作,PDF文件被写入磁盘。

示例代码如下:

using Spire.Pdf;
using Spire.Pdf.Graphics;

namespace CreatePdfExample
{
    public class Program
    {
        public static void Main(string[] args)
        {
            //创建PdfDocument类的实例
            PdfDocument document = new PdfDocument();

            //添加新页
            PdfPageBase page = document.Pages.Add();

            //设置页面尺寸和边距
            page.Canvas尺寸 = new SizeF(612, 792); // US Letter大小
            page.PageSettings Margins = new PdfPageMargins(40, 40, 40, 40);

            //添加元素到页面
            PdfBrush brush = new PdfSolidBrush(new PdfRGBColor(Color.Black));
            PdfFont font = new PdfTrueTypeFont(new Font("Arial", 14), true);
            page.Canvas.DrawString("Hello, Spire.Pdf!", font, brush, 100, 100);

            //保存PDF文档
            document.SaveToFile("output.pdf", FileFormat.PDF);
            document.Dispose();
        }
    }
}

在上述代码中,我们创建了一个PDF文档,添加了一张包含文本的页面,并将它保存为一个名为 output.pdf 的文件。每个步骤都详细地说明了如何操作,包括创建文档实例、添加页面、设置页面属性以及最终保存文件。

2.1.2 创建具有特定格式的PDF文件

Spire.Pdf同样支持创建具有特定格式要求的PDF文件,包括但不限于自定义的页面尺寸、边距、旋转方向等。通过设置PdfPageSettings和PdfPageBase类的属性,可以轻松定制页面布局,以满足特定的业务需求。

using Spire.Pdf;
using Spire.Pdf.Graphics;

namespace CreateCustomFormatPdfExample
{
    public class Program
    {
        public static void Main(string[] args)
        {
            PdfDocument document = new PdfDocument();

            // 创建自定义尺寸的PDF页面
            PdfPageBase page = document.Pages.Add();
            page.Canvas尺寸 = new SizeF(600, 842); // 自定义尺寸,单位为点(1/72英寸)
            page.PageSettings Margins = new PdfPageMargins(10, 10, 10, 10);

            // 设置页面旋转为横向
            page.Orientation = PdfPageOrientation.Landscape;

            PdfBrush brush = new PdfSolidBrush(new PdfRGBColor(Color.Black));
            PdfFont font = new PdfTrueTypeFont(new Font("Arial", 14), true);
            page.Canvas.DrawString("Custom format PDF!", font, brush, 50, 50);

            document.SaveToFile("custom_format.pdf", FileFormat.PDF);
            document.Dispose();
        }
    }
}

在这段代码中,我们创建了一个自定义尺寸(600x842点)的PDF页面,并将页面方向设置为横向。此外,我们还添加了一些文本到页面上,以展示自定义格式的PDF文档。

3. PDF阅读器控件使用

阅读器控件在PDF处理软件中扮演着核心角色,它允许用户直接在应用程序中查看和与PDF文档互动。Spire.Pdf阅读器控件支持广泛的自定义功能,不仅可以在桌面应用程序中使用,也可以嵌入到网页和移动应用中,为用户提供无缝的阅读体验。本章节将详细介绍Spire.Pdf阅读器控件的基本使用和高级使用场景。

3.1 Spire.Pdf阅读器控件的基本使用

3.1.1 控件的基本属性和方法

Spire.Pdf阅读器控件提供了丰富的属性和方法,使开发者能够轻松地集成PDF查看功能到他们的应用程序中。以下是一些关键属性和方法的简介:

  • Document :此属性用于设置或获取当前加载的PDF文档。
  • ZoomFactor :用于设置或获取当前页面的缩放比例。
  • PageFitMode :此属性决定了页面内容的显示方式,如适应页面宽度、高度或实际大小。
  • GoToPage :一个方法,用于导航到文档的特定页面。
  • Print :打印当前文档的页面。

具体实现这些属性和方法的代码示例如下:

PdfDocument document = new PdfDocument();
document.LoadFromFile("path_to_pdf_file.pdf");

// 加载PDF文档
viewer.Document = document;

// 设置页面缩放比例为100%
viewer.ZoomFactor = 100;

// 将视图适配到页面宽度
viewer.PageFitMode = PdfPageFitMode.PageWidth;

// 导航到第3页
viewer.GoToPage(2);

// 打印当前页面
viewer.Print();

在上述代码中,我们首先创建了 PdfDocument 实例,并加载了指定路径的PDF文件。然后,我们通过 viewer 对象(假设是一个已经初始化的 PdfViewerControl 实例)设置了文档、缩放比例、页面显示方式、导航到特定页面以及执行打印任务。

3.1.2 控件的基本操作

为了更深入地理解如何使用阅读器控件,我们详细探讨其基本操作:

  • 页面导航 :Spire.Pdf允许用户前后翻页、跳转到特定页面或滚动到特定位置。
  • 缩放和平移 :用户可以缩放页面内容,通过鼠标滚轮或控件提供的方法进行缩放和平移操作。
  • 文本选择和搜索 :控件支持文本选择功能,用户可以高亮显示文本并复制到剪贴板。此外,控件提供了搜索功能,可查找文档中的文本片段。

3.2 PDF阅读器控件的高级使用

3.2.1 实现PDF文件的预览

Spire.Pdf阅读器控件可以实现PDF文件的高级预览功能。通过编程,我们可以添加书签、缩略图、注释等辅助元素,提升用户的阅读体验。

  • 书签功能 :书签允许用户快速导航到文档中的指定位置。开发者可以创建书签,并将其与特定页面关联。
  • 缩略图导航 :为用户提供一个缩略图面板,可以点击缩略图快速跳转到相应页面。
  • 注释工具 :阅读器控件支持添加和编辑注释,如高亮、下划线、注释文本框等。

3.2.2 实现PDF文件的打印

打印功能是阅读器控件中不可或缺的一部分。Spire.Pdf提供了完整的打印支持,包括打印预览和直接打印到打印机。

  • 打印预览 :允许用户在实际打印前查看页面在纸张上的布局。
  • 打印机选择和设置 :用户可以选择不同的打印机,并设置打印参数,如页眉页脚、打印质量等。

在Spire.Pdf中,实现打印预览和直接打印可以通过以下代码实现:

// 打开打印预览对话框
viewer.PrintPreview();

// 或者直接打印当前文档
viewer.Print();

在实际应用中,开发者可能需要根据用户需求定制打印对话框,此时可以使用 PrintDialog 控件来实现更细粒度的打印控制。

综上所述,Spire.Pdf阅读器控件为开发者提供了丰富的功能和灵活的自定义选项,无论是实现基本的PDF查看功能还是提供高级交互功能,Spire.Pdf都能满足需求。通过接下来的章节,我们将深入了解如何使用Spire.Pdf来导出和打印PDF文件、加密与解密、创建和填充PDF表单等更多高级功能。

4. PDF文件导出与打印功能

4.1 Spire.Pdf的文件导出功能

4.1.1 支持的导出格式

Spire.Pdf库提供了多种文件格式的导出功能,包括但不限于以下几种:

  • PDF:导出为标准的PDF文件格式。
  • PNG:将PDF页面导出为PNG图片格式。
  • JPEG:将PDF页面导出为JPEG图片格式。
  • BMP:将PDF页面导出为BMP图片格式。
  • TIFF:将PDF页面导出为多页的TIFF文件格式。
  • Text:提取PDF中的文本内容导出为文本文件。

4.1.2 导出文件的步骤和注意事项

导出文件时,需遵循以下步骤:

  1. 创建 PdfDocument 对象并加载要导出的PDF文件。
  2. 选择合适的导出类型和参数设置,如分辨率、导出格式等。
  3. 调用导出方法,指定输出路径和文件名。
  4. 确保路径存在并且有足够的权限进行写操作。

注意事项包括:

  • 导出时应保持清晰度与文件大小的平衡,尤其是对于图像格式。
  • 确保PDF文档没有加载外部资源,因为导出时可能不会考虑这些资源。
  • 对于文本导出,应考虑编码问题,确保导出的文本文件无乱码。

以下是一个将PDF页面导出为PNG图像的示例代码:

PdfDocument document = new PdfDocument();
document.LoadFromFile("input.pdf");
// 设置导出参数,例如分辨率
PdfExportImageSettings settings = new PdfExportImageSettings(300, 300);
// 导出为PNG格式
document.ExportToImages("output.png", PdfImageType.Png, settings, 0);

在上述代码中, document.ExportToImages 是导出方法, "output.png" 是输出文件名, PdfImageType.Png 指定了输出格式, settings 是导出参数, 0 表示导出第一页。

4.2 Spire.Pdf的打印功能

4.2.1 打印PDF文件的基本步骤

打印PDF文件是一个简单的操作,但涉及到用户的打印机配置。基本步骤如下:

  1. 加载PDF文档。
  2. 确定并配置打印机。
  3. 使用 PdfDocument.Print 方法或 PrintDocument 对象发送打印任务。
  4. 在打印设置中进行页面范围、打印份数、打印质量等设置。

示例代码展示了如何使用 PrintDocument 对象进行打印:

PdfDocument document = new PdfDocument();
document.LoadFromFile("input.pdf");
PrintDocument printDoc = new PrintDocument();
printDoc.PrintPage += (sender, e) =>
{
    // 这里编写打印页面内容的逻辑
};
printDoc.PrintController = new StandardPrintController();
printDoc.Print();

在上面的代码中, PrintDocument 类负责管理打印任务, printDoc.PrintPage 事件用于定义打印页面内容。

4.2.2 打印PDF文件的高级设置

打印PDF文件的高级设置包括但不限于:

  • 选择打印纸张大小和类型。
  • 设置打印质量(黑白、彩色、草稿质量等)。
  • 选择打印的颜色模式。
  • 自定义边距和其他打印布局选项。
  • 设置打印份数。

在使用 PrintDocument 对象打印时,可以通过其 PrinterSettings 属性来配置这些高级选项。例如,以下代码展示了如何设置打印质量:

printDoc.PrinterSettings = new PrinterSettings();
printDoc.PrinterSettings.PrintQuality = PrintQuality.High;

在上述代码中, PrintQuality.High 指定了高打印质量。开发者可以根据实际需求设置不同的打印质量。

4.2.3 高级打印设置的Mermaid流程图

为了直观地理解打印流程中各个设置的相互关系,以下是一个使用Mermaid语法创建的流程图:

graph LR
A[开始打印PDF] --> B[加载PDF文档]
B --> C[配置打印机]
C --> D[设置打印参数]
D --> E[发送打印任务]
E --> F{是否需要高级设置?}
F --> |是| G[配置纸张大小、颜色等]
F --> |否| H[进行常规打印]
G --> I[结束]
H --> I

上述流程图说明了打印PDF文件的整个流程,以及在哪些节点可以进行高级打印设置。在实际应用中,高级设置可以大大提升打印质量和满足特定的打印需求。

5. 加密与解密PDF文档

5.1 Spire.Pdf的加密功能

5.1.1 设置密码保护

密码保护是PDF文档安全性的基础,它允许用户为文件设置一个或多个密码。Spire.Pdf库提供了设置密码保护的简便方法。通过为PDF文件设置打开密码和修改密码,可以有效防止未经授权的阅读和编辑。

// 设置打开密码和修改密码
PdfFileSecurity fileSecurity = new PdfFileSecurity("input.pdf", "output.pdf");
fileSecurity.SetOpenPassword("open_password");
fileSecurity.SetModifyPassword("modify_password");
fileSecurity.SetPermissionPassword("permission_password");
fileSecurity.Encrypt();

在上述代码中, PdfFileSecurity 类负责处理文档的安全性设置。调用 SetOpenPassword 方法为文档设置打开密码,而 SetModifyPassword 方法则用于设置修改密码。此外, SetPermissionPassword 用于设置权限密码,它与修改密码不同,它可以控制用户对文档的不同操作权限。

5.1.2 设置权限密码

权限密码可以用来限制用户对文档的某些操作,如复制、打印、编辑等。Spire.Pdf同样支持为PDF文档设置权限密码,并定义相应的权限。

// 设置权限密码并定义权限
fileSecurity.SetPermissionPassword("permission_password");
fileSecurity.Permissions = PdfPermissions.Print | PdfPermissions.CopyContents;
fileSecurity.Encrypt();

在上述代码中,通过 SetPermissionPassword 方法设置了权限密码。 Permissions 属性定义了允许的操作权限,其中 PdfPermissions.Print 允许打印文档, PdfPermissions.CopyContents 允许复制文档内容。

5.2 Spire.Pdf的解密功能

5.2.1 去除密码保护

去除密码保护是PDF文档共享前的必要步骤。Spire.Pdf提供了简单的方式来去除PDF文件的打开密码和修改密码。

// 去除PDF文件的打开密码和修改密码
PdfFileSecurity fileSecurity = new PdfFileSecurity("encrypted.pdf", "decrepted.pdf");
fileSecurity.RemoveOpenPassword();
fileSecurity.RemoveModifyPassword();
fileSecurity.Decrypt();

PdfFileSecurity 类同样用于处理去除密码保护的操作。通过调用 RemoveOpenPassword RemoveModifyPassword 方法,可以分别去除打开密码和修改密码。最后,调用 Decrypt 方法完成解密过程。

5.2.2 去除权限密码

如果PDF文档具有权限密码,那么在去除密码保护的基础上,还需要去除这些权限限制,以便用户能够完全访问文档的所有内容。

// 去除权限密码
fileSecurity.RemovePermissionPassword();
fileSecurity.Decrypt();

调用 RemovePermissionPassword 方法即可去除权限密码,之后通过 Decrypt 方法完成解密。

通过本章节的介绍,我们了解了如何使用Spire.Pdf库来保护PDF文档的安全,以及如何去除文档的密码保护,使得文档能够被其他用户正常阅读和编辑。接下来,我们将探索如何创建和填充PDF表单,进一步丰富PDF文档的功能。

6. 创建与填充PDF表单

在数字化办公的今天,电子表单的应用越来越广泛。Spire.Pdf作为一款功能强大的PDF处理库,它不仅可以创建PDF文档,还可以创建和管理PDF表单。本章将详细探讨如何利用Spire.Pdf创建PDF表单以及如何填充和提交表单数据。

6.1 Spire.Pdf的表单创建功能

Spire.Pdf提供了一系列丰富的API,使得开发者能够轻松创建包含各种表单元素的PDF文件。用户可以通过Spire.Pdf库中的 PdfForm 类来创建具有特定格式的表单。

6.1.1 创建表单的基本步骤

要使用Spire.Pdf创建PDF表单,首先需要了解表单创建的基本步骤。以下是创建一个基本PDF表单的流程:

  1. 初始化PdfDocument类 :创建一个 PdfDocument 实例,用于存储PDF文档的相关信息。
  2. 添加新的页面 :使用 Add 方法向 PdfDocument 实例中添加新的页面。
  3. 创建PdfForm实例 :创建一个 PdfForm 实例,并将其与页面关联。
  4. 添加表单字段 :使用 PdfForm 实例提供的方法,向表单中添加不同的表单字段,例如文本框、复选框、单选按钮等。
  5. 保存和输出PDF文档 :完成表单创建后,使用 PdfDocument 类的 Save 方法保存文档。

以下是一个简单的示例代码,演示了如何创建一个包含文本框和提交按钮的PDF表单:

// 初始化PdfDocument类
PdfDocument document = new PdfDocument();
document.LoadFromFile("input.pdf");

// 添加新的页面
PdfPageBase page = document.Pages.Add();

// 创建PdfForm实例
PdfForm form = new PdfForm(document, page);

// 添加表单字段
form.Fields.Add(new PdfTextBoxField(form, "Name", "Name:", new RectangleF(50, 700, 300, 15)));
form.Fields.Add(new PdfButtonField(form, "Submit", PdfButtonTypeName.Submit, new RectangleF(50, 670, 100, 25)));

// 保存和输出PDF文档
document.SaveToFile("output.pdf", FileFormat.Pdf);

6.1.2 创建具有特定格式的表单

在创建PDF表单时,除了添加基础字段外,还可以根据需求添加一些特殊格式的表单字段。例如,如果需要创建一个带有密码保护的文本框,可以使用以下代码:

// 添加密码保护的文本框
form.Fields.Add(new PdfPasswordField(form, "Password", "Password:", new RectangleF(50, 640, 300, 15)));

在创建具有特定格式的表单时,通常需要对字段的属性进行详细设置,如字体大小、颜色、对齐方式等,以满足特定的格式要求。

6.2 PDF表单的填充和提交功能

创建完PDF表单之后,接下来的一个重要步骤是填充和提交表单数据。

6.2.1 填充表单的基本步骤

填充表单时,可以使用 PdfForm 类的 SetField 方法来填充表单字段的数据。以下是基本的步骤:

  1. 加载PDF文档 :首先加载包含表单的PDF文档。
  2. 实例化PdfForm :使用 PdfForm.Load 方法加载已经存在的PDF表单。
  3. 填充表单数据 :使用 SetField 方法为表单字段赋值。
  4. 保存表单数据 :完成数据填充后,使用 Save 方法保存表单数据。

以下是一个简单示例代码,演示了如何填充和保存PDF表单数据:

// 加载PDF文档
PdfDocument document = new PdfDocument();
document.LoadFromFile("form_with_fields.pdf");

// 实例化PdfForm
PdfForm form = new PdfForm(document, document.Pages[0]);
form.Load();

// 填充表单数据
form.SetField("Name", "John Doe");
form.SetField("Password", "P@ssw0rd!");

// 保存表单数据
form.Save();
document.SaveToFile("filled_form.pdf", FileFormat.Pdf);

6.2.2 提交表单的方法

完成表单的填充后,可以将表单数据提交给服务器进行进一步处理。这通常通过Web表单完成,用户在客户端填写表单后,点击提交按钮将数据发送到服务器。

在客户端,可以使用JavaScript来触发表单的提交事件,服务器端则需要设置相应的服务接收和处理表单数据。这一部分通常涉及到Web开发的技术栈,不属于Spire.Pdf的功能范畴,但Spire.Pdf确保了用户在客户端能够以正确格式生成表单数据。

使用Spire.Pdf库创建和管理PDF表单的能力,极大地简化了开发流程,使得开发者能够专注于应用逻辑而非底层实现细节。无论是在企业内部还是面向最终用户的应用中,Spire.Pdf的表单处理功能都是一个强大的工具,能够帮助提高工作效率和用户体验。

以上内容提供了关于使用Spire.Pdf创建和填充PDF表单的详细指南。通过简单的代码示例和步骤解析,我们希望读者能够轻松上手Spire.Pdf的表单处理功能,并能够将其应用于实际的项目中。

7. 图像处理与书签管理

图像处理是PDF文档中常见的需求之一,比如在文档中插入公司标志、修改或删除现有图片等操作。书签功能则能极大地提升用户阅读和导航大型PDF文件时的体验。本章节我们将深入探讨Spire.Pdf库在图像处理和书签管理方面的能力。

7.1 Spire.Pdf的图像处理功能

Spire.Pdf提供了一系列的图像处理功能,如插入、删除图像,以及修改图像属性等。

7.1.1 插入和删除图像

Spire.Pdf可以轻松地将图像插入到PDF文档中的指定页面和位置。同样地,也可以在不需要时删除已有的图像。

// 插入图像到PDF文档
Document pdf = new Document();
pdf.LoadFromFile("input.pdf");
PdfPageBase page = pdf.Pages[0];

// 创建一个图像实例
PdfImage img = PdfImage.FromFile("image.jpg");

// 设置图像位置和大小
img.Intent = PdfIntent.Media;
img.Width = 150;
img.Height = 100;

// 将图像添加到页面上
page.Canvas.DrawImage(img, new PdfPoint(100, 300));

// 保存文件
pdf.SaveToFile("output.pdf", FileFormat.Pdf);
pdf.Dispose();

7.1.2 修改图像的属性

Spire.Pdf允许开发者修改图像的属性,包括大小、位置、透明度等,这为图像编辑提供了灵活性。

// 加载PDF文件
Document pdf = new Document();
pdf.LoadFromFile("input.pdf");

// 获取第一个页面上的第一个图像
PdfImage img = pdf.Pages[0].Graphics.ClientSize;

// 修改图像属性
imgIntentIntent = PdfIntent.Print;
img.Width = 200;
img.Height = 150;
img.Opacity = 0.5; // 设置透明度为50%

// 保存更改
pdf.SaveToFile("output.pdf", FileFormat.Pdf);
pdf.Dispose();

7.2 Spire.Pdf的书签管理功能

书签在大型文档中特别有用,它允许用户快速定位到文档的特定部分。Spire.Pdf库提供了丰富的API来管理书签。

7.2.1 添加和删除书签

Spire.Pdf库可以添加书签到PDF文档的任何位置,并且可以删除不需要的书签。

// 创建书签
Document pdf = new Document();
pdf.LoadFromFile("input.pdf");
PdfBookmark bookmark = pdf.CreateBookmark("Section 1", pdf.Pages[0], false);

// 设置书签属性
bookmark.OpenInNewWindow = true;
bookmark Intent = PdfIntent.ForCommenting;

// 删除书签
pdf.DeleteBookmark("Section 1");

// 保存文件
pdf.SaveToFile("output.pdf", FileFormat.Pdf);
pdf.Dispose();

7.2.2 修改书签的属性

除了添加和删除之外,Spire.Pdf还允许修改书签的各种属性,如标题、颜色、字体大小等。

// 加载PDF文件
Document pdf = new Document();
pdf.LoadFromFile("input.pdf");
PdfBookmark bookmark = pdf.Bookmarks[0];

// 修改书签属性
bookmark.Title = "Updated Section 1";
bookmark.Color = new PdfRGBColor(0, 255, 0); // 设置书签颜色为绿色
bookmark.Font = new PdfFont(PdfFontFamily.TimesRoman, 12);

// 保存文件
pdf.SaveToFile("output.pdf", FileFormat.Pdf);
pdf.Dispose();

通过以上示例代码和步骤,我们可以看到Spire.Pdf在处理PDF文档中的图像插入、删除、编辑以及书签的添加、删除、属性修改方面的能力。这些功能为开发者提供了一个强大而灵活的方式来增强PDF文档的交互性和用户体验。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:Spire.Pdf是一款全方位的.NET PDF处理库,支持在.NET框架下创建、编辑、阅读和转换PDF文档。本文详细解析了该组件的功能,包括PDF的创建与编辑、阅读与显示、安全性增强、表单处理、高级图像处理、书签与超链接管理、数字签名以及PDF/A兼容性等功能。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值