Go语言PDF生成库gopdf的使用指南

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

简介:gopdf是一个Go语言库,支持在应用程序中轻松创建和编辑PDF文件。它提供了一系列API,允许开发者添加文本、图像、链接和自定义图形到PDF文档中。通过实例展示如何使用gopdf导入库、创建文档实例、添加页面、插入文本、图片和链接,以及绘制基本图形和保存文件。该库适用于多种场景,如报告和发票,并且社区的持续优化使其成为一个强大的工具。 gopdf

1. Go语言PDF生成库gopdf简介

在数字文档处理领域,生成PDF文件是一种常见的需求。Go语言作为一种系统编程语言,其丰富的第三方库支持了各种格式的文件操作,包括PDF。本章将对Go语言的PDF生成库gopdf进行简要介绍,让读者对其起源与发展有一个大致的了解,并概括其核心特性和功能,为后续章节奠定基础。

gopdf库的起源与发展

gopdf是一个开源的Go语言库,它的诞生满足了在Go项目中生成和处理PDF文件的需求。随着Go语言的流行,gopdf也随之逐渐发展,现在它已支持创建复杂的PDF文档,并且易于扩展和维护。通过不断的社区贡献和开发者优化,gopdf库已经成为了Go语言生态中不可或缺的一部分。

gopdf库的核心特性与功能概述

gopdf的核心功能包括但不限于文本的添加、图像的插入、页面的创建与管理、图形的绘制以及最终PDF文件的保存与优化。它提供了一系列简洁的API接口,允许开发者通过简单的函数调用,即可完成复杂的PDF操作任务。此外,gopdf还支持多种文本样式和图形属性的设置,使得生成的PDF文件既美观又实用。

// 示例代码块展示如何使用gopdf创建一个基础的PDF文档
package main

import (
    "***/edragoev1/pdfgo"
)

func main() {
    // 初始化PDF文档
    pdf := pdfgo.NewPdf()

    // 创建一个页面
    page := pdf.AddPage()

    // 在页面上添加文本
    page.WriteText("Hello, gopdf!")

    // 保存PDF文档
    pdf.SaveToFile("hello_gopdf.pdf")
}

上述代码展示了如何使用gopdf库初始化一个PDF对象,向其中添加一个页面,并在页面中写入文本。最后将生成的PDF文档保存为文件。这只是gopdf功能的一个缩影,更多高级特性将在后续章节详细介绍。

2. 导入库与创建PDF文档实例

2.1 gopdf库的基本导入与初始化

在这一部分,我们将深入探讨如何开始使用Go语言的PDF库gopdf。gopdf是一个功能丰富的库,允许开发者在Go程序中创建和操作PDF文档。我们会详细讲解gopdf库的安装、导入以及如何创建你的第一个PDF文档。

2.1.1 导入库的基本方法

要开始使用gopdf库,首先需要在你的Go项目中导入它。你可以在项目的依赖文件 go.mod 中添加以下内容来安装gopdf库:

``` */jung-kurt/gofpdf


这行命令会拉取gopdf库并将其添加到你的项目依赖中。安装完成后,你就可以在你的Go代码中导入并使用它了。

下面展示了如何在Go代码中导入gopdf库并开始编写生成PDF文档的基本代码:

```go
package main

import (
    "***/jung-kurt/gofpdf"
)

func main() {
    // 在这里初始化PDF实例,设置页面格式和方向
}
2.1.2 初始化PDF文档对象

一旦我们导入了库,我们需要创建一个PDF文档对象。gopdf提供了几个构造函数来满足不同的需求,例如创建一个新的PDF文档,从现有的PDF文件中添加页面等。我们这里将演示如何创建一个全新的PDF文档实例,并设置其页面格式和方向。

下面的代码段演示了如何创建一个PDF文档对象,设置为A4页面大小,并使用默认的横向格式:

pdf := gofpdf.New(gofpdf.OrientationLandscape, gofpdf.UnitPoint, gofpdf.PageSizeA4, "")

这行代码创建了一个新的PDF文档,指定了横向方向( gofpdf.OrientationLandscape ),使用点作为尺寸单位( gofpdf.UnitPoint ),页面大小为A4, "" 表示使用默认的字体路径。

2.2 创建PDF文档的实践操作

现在我们已经了解了如何导入库并初始化PDF文档对象,接下来我们将进入实践操作,创建一些简单的PDF文档实例,这将帮助我们理解gopdf库的基础用法。

2.2.1 创建简单文本PDF文件

对于一个刚接触gopdf的新手来说,创建包含文本的PDF文件是一个很好的起点。我们将编写一个程序,它将创建一个PDF文件,并在其中添加一段简单的文本。

func main() {
    pdf := gofpdf.New(gofpdf.OrientationPortrait, gofpdf.UnitPoint, gofpdf.PageSizeA4, "")

    // 添加一个简单文本
    pdf.AddPage()
    pdf.SetFont("Arial", "", 12)
    pdf.Cell(0, 10, "Hello, World!")
    pdf.OutputFileAndClose("hello_world.pdf")
}

在上述代码中,我们首先创建了一个PDF文档对象并设置为纵向( gofpdf.OrientationPortrait )。然后我们添加了一个新页面,并设置了字体为Arial、大小为12、无样式。接着我们使用 Cell 方法在页面上添加了一个文本单元格,内容为"Hello, World!",最后我们将PDF输出为一个名为"hello_world.pdf"的文件。

2.2.2 创建包含多个页面的PDF文件

当创建单页PDF文件后,让我们考虑创建一个包含多个页面的文档。为此,我们需要对每个页面调用 AddPage() 方法,然后重复添加内容的步骤。

以下代码展示了一个生成包含两个页面的PDF文档的例子:

func main() {
    pdf := gofpdf.New(gofpdf.OrientationPortrait, gofpdf.UnitPoint, gofpdf.PageSizeA4, "")

    // 第一页
    pdf.AddPage()
    pdf.SetFont("Arial", "", 12)
    pdf.CellFormat(0, 10, "Page 1", "", 1, "C")
    pdf.Ln(40) // 给出一个新行
    pdf.CellFormat(0, 10, "Some more text.", "", 1, "C")

    // 第二页
    pdf.AddPage()
    pdf.SetFont("Arial", "", 12)
    pdf.CellFormat(0, 10, "Page 2", "", 1, "C")
    pdf.Ln(40)
    pdf.CellFormat(0, 10, "And a bit more text.", "", 1, "C")

    pdf.OutputFileAndClose("multi_page.pdf")
}

在这个例子中,我们首先创建了PDF文档对象并设置了页面方向为纵向。然后我们添加了两个页面,每个页面都添加了带有中心对齐的文本。每个 CellFormat 调用后面的 Ln(40) 方法用于在每段文本后添加一个40点高的新行。最后我们输出了一个名为"multi_page.pdf"的文件,其中包含了两个页面的内容。

通过这些简单的例子,我们已经介绍了如何使用gopdf库创建PDF文档。在下一章,我们会更深入地探讨如何向PDF文档中添加页面和文本内容。

3. 添加页面与文本到PDF

在本章中,我们将深入了解如何使用gopdf库向已创建的PDF文档中添加页面和文本。这些操作是生成复杂PDF文档不可或缺的部分,因此需要仔细学习如何有效地使用gopdf提供的API。

3.1 向PDF中添加新页面

3.1.1 页面尺寸和方向设置

gopdf库允许用户创建多种尺寸和方向的页面。在创建新页面时,可以通过 AddPage() 方法指定页面的尺寸和方向。页面尺寸通常以毫米(mm)为单位,方向可以是纵向(portrait)或横向(landscape)。

import (
    "***/edsrzf/gopdf"
)

func createPage(pdf *gopdf.GoPdf, paperSize string, orientation string) {
    switch paperSize {
    case "A4":
        pdf.AddPage(gopdf.Config{Orientation: orientation, Margins: gopdf Margins{Top: 20, Left: 20, Right: 20, Bottom: 20}})
    // 添加其他页面尺寸和方向的配置
    }
}

3.1.2 页面内容的添加顺序

页面上内容的添加顺序会直接影响最终PDF的视觉效果。gopdf会按照你添加内容的顺序从上至下绘制,因此要提前规划好页面布局。例如,先绘制标题和文本,然后是图片,最后是注脚。

func addContent(pdf *gopdf.GoPdf) {
    // 添加文本和图像等,根据需要调整顺序
    // ...
}

3.2 在PDF页面中添加文本内容

3.2.1 文本的样式和属性设置

在gopdf中,文本样式可以通过多种方式设置,包括字体、大小、颜色等。你可以使用 pdf.SetFont() 方法来指定字体和大小, SetTextColor() 来设置文本颜色,以及 SetFontSize() 来调整字体大小。

pdf.SetFont("Arial", "", 12)
pdf.SetTextColor(0, 0, 0) // RGB颜色设置为黑色
pdf.SetFontSize(12)

3.2.2 使用文本框和段落进行排版

当你需要在一个页面上展示多段文本时,可以使用文本框来控制文本的排版。文本框可以帮助你确定文本的位置、宽度以及如何处理文本换行等问题。gopdf库提供了一个简单的API来创建和使用文本框。

// 创建一个文本框
textBox := pdf.AddPage().NewTextBox()

// 设置文本框的位置和尺寸
textBox.SetPositionAndSize(10, 10, 200, 300)

// 将文本添加到文本框
textBox.Write("这是一段文本。")

文本框支持自动换行,通过 Write() 方法添加文本时,文本会自动填满文本框的宽度,并在末尾换行。

3.2.3 代码块的逻辑分析和参数说明

在以上代码块中, pdf.SetFont() , pdf.SetTextColor() pdf.SetFontSize() 为设置字体、颜色和大小的方法。这些方法都是在 pdf 对象上进行操作的,该对象代表了当前PDF文档的上下文。参数包括字体名称、样式和大小。这些设置将应用于随后添加的文本内容,直到你重新指定新的样式为止。

textBox.Write() 方法会将文本添加到当前定义的文本框中。该方法可以多次调用,将多段文本添加到同一个文本框中。需要注意的是,文本框的宽度和高度参数决定了文本的排版方向和换行行为。

通过这种方式,你可以创建结构清晰的页面布局,使得PDF文档不仅内容丰富,而且美观易读。

4. 插入图像与设置链接

在现代文档处理中,图像的插入和链接的设置是提高文档交互性和可读性的重要手段。本章将深入探讨如何在使用Go语言的PDF库gopdf中实现这些功能。

4.1 在PDF文档中插入图像

图像不仅能够美化文档,还能够提供直观的信息展示。gopdf库支持多种常见的图像格式,并提供了灵活的接口来处理图像的插入。

4.1.1 支持的图像格式与插入方法

gopdf库支持常见的图像格式,例如JPEG、PNG、GIF等。开发者可以在创建PDF文件的同时,将这些图像以流的形式直接写入到PDF文档中。下面将介绍如何在PDF文档中插入一张JPEG格式的图片。

package main

import (
    "bytes"
    "***/edi9999/go-pdf" // 假设的gopdf库导入路径
)

func main() {
    // 创建PDF文档
    pdfWriter := go-pdf.NewPdfWriter()
    pdfWriter.StartPDF()

    // 读取图像文件内容
    imageData, err := ioutil.ReadFile("path/to/image.jpg")
    if err != nil {
        log.Fatal(err)
    }

    // 将图像内容以流的形式写入PDF
    err = pdfWriter.Image(bytes.NewReader(imageData), go-pdf.ImageOptions{
        Width:  100, // 图片宽度
        Height: 100, // 图片高度
    })
    if err != nil {
        log.Fatal(err)
    }

    pdfWriter.WritePage()
    pdfWriter.WritePdf()
}

在上述代码中,我们首先创建了一个PDF文档,并初始化了PDF写入器。接着,我们以二进制形式读取了图像文件,并使用 Image 方法将其添加到PDF中。 go-pdf.ImageOptions 结构体中可以指定图像的宽度、高度和解码方式等参数。

4.1.2 图像的大小、位置与缩放

在向PDF文档插入图像时,常常需要根据页面布局对图像进行适当的调整。这包括设置图像的大小、位置以及是否进行缩放处理。以下是一个调整图像大小和位置的示例代码:

// 假定已有的PDF写入器实例
pdfWriter := ... 

// 插入图像并设置位置和大小
err = pdfWriter.Image(bytes.NewReader(imageData), go-pdf.ImageOptions{
    Width:       150,    // 设置图像宽度为150单位
    Height:      150,    // 设置图像高度为150单位
    AllowNatural: true,   // 允许图像按比例缩放
    Rect:        []float64{10, 20, 160, 170}, // 设置图像在页面中的位置及大小
})

Rect 选项中,我们以PDF文档的坐标系统来指定图像插入的位置和大小。该坐标系以页面左下角为原点, x 坐标向右为正, y 坐标向上为正。

4.2 设置PDF中的链接与书签

链接和书签是提升PDF文档用户体验的重要组成部分。用户可以通过点击链接快速跳转到文档中的指定部分或者外部资源。gopdf库提供了创建链接和书签的功能。

4.2.1 创建内部和外部链接

内部链接允许用户在同一个PDF文档的不同部分之间跳转。外部链接则可以链接到其他文档或者网页。下面将展示如何在PDF文档中创建这些链接。

// 假定已有的PDF写入器实例
pdfWriter := ... 

// 写入包含链接的文本
pdfWriter.Text(50, 500, "Go to page 3", go-pdf.TextOptions{
    FontSize: 12,
    Font:     "Helvetica",
    Link: go-pdf.Link{
        Type:      "GoTo", // 内部链接类型
        Destination: go-pdf.Destination{Page: 2}, // 链接到第3页
    },
})

// 添加外部链接
pdfWriter.Text(50, 450, "Visit gopdf GitHub page", go-pdf.TextOptions{
    FontSize: 12,
    Font:     "Helvetica",
    Link: go-pdf.Link{
        Type:      "URI", // 外部链接类型
        Destination: go-pdf.Destination{URI: "***"},
    },
})

在上述代码中,我们创建了两个文本框,并为它们设置了链接。第一个文本框中的链接类型为 GoTo ,意味着当用户点击这个链接时,PDF阅读器会跳转到文档的第三页(索引从0开始)。第二个文本框的链接类型为 URI ,点击后将打开默认浏览器,并导航至gopdf的GitHub页面。

4.2.2 创建书签以方便导航

书签是PDF文档中用于导航的特殊标签,它们可以提供文档结构的概览,并允许用户快速跳转到感兴趣的章节。gopdf同样支持书签的添加。下面是如何在PDF文档中添加书签的示例代码:

// 假定已有的PDF写入器实例
pdfWriter := ... 

// 添加书签并指向内部链接
pdfWriter.Bookmark("Page 3", go-pdf.Bookmark{
    Level:   0, // 书签级别
    Page:    2, // 目标页面索引
    Top:     0, // 目标位置的垂直位置
    Bottom:  0,
    Open:    false, // 是否在打开时展开
})

// 写入标记点
pdfWriter.Text(50, 500, "This is a bookmarked text.", go-pdf.TextOptions{
    FontSize: 12,
    Font:     "Helvetica",
})

在这段代码中,我们通过 Bookmark 方法添加了一个书签,并将其指向了第三页。书签的级别(Level)定义了它的层级结构,如果设置为0,则为顶级书签。我们还可以通过设置 Top Bottom 属性来指定书签标记文本的位置。

接下来,我们添加了一段文本,并通过这段文本的显示位置与书签相匹配。当用户在PDF阅读器中点击书签时,文档将自动跳转到该标记点所在的页面和位置。

通过本章节的介绍,我们可以看到gopdf库在图像插入和链接设置方面提供了强大而灵活的功能。这使得我们能够创建更为丰富和互动的PDF文档。在下一章中,我们将探索如何在PDF中绘制图形,并学习如何优化和保存PDF文件。

5. ```

第五章:绘制图形与保存PDF文件

在生成PDF文档时,我们往往需要在其中绘制各种图形以增强文档的表达力。Go语言的gopdf库提供了一系列方法来绘制基本图形,并组合它们以形成复杂的图形设计。本章节我们将详细探讨如何使用gopdf库在PDF中绘制线条、矩形、圆形等基本图形,以及如何将这些图形组合并进行填充。此外,我们还将了解如何保存和输出最终的PDF文件,并探讨优化PDF文件大小和兼容性的策略。

5.1 在PDF中绘制线条与图形

5.1.1 基本图形的绘制方法

首先,我们从最基础的图形绘制开始。在gopdf库中,我们可以通过 AddPage() 方法创建一个新的页面,并使用 Canvas() 方法获取该页面的画布。一旦我们获取了画布对象,便可以开始绘制各种图形了。

下面的代码示例展示了如何在PDF页面中绘制一个简单的线段、矩形和圆形:

package main

import (
    "***/edrdmolina/gopdf"
    "math"
)

func main() {
    // 创建PDF文档实例
    doc := gopdf.GoPdf{}
    doc.Start(gopdf.Config{PageSize: gopdf.Point{X: 210, Y: 297}})

    // 获取画布对象
    pageCanvas := doc.Canvas()

    // 绘制线段
    pageCanvas.Stroke(gopdf.Point{X: 10, Y: 10}, gopdf.Point{X: 100, Y: 10})

    // 绘制矩形
    pageCanvas.DrawRect(10, 20, 100, 50)

    // 绘制圆形
    pageCanvas.DrawCircle(150, 150, 50)

    // 保存文档
    doc.Save()
}

5.1.2 复杂图形的组合与填充

绘制复杂图形时,我们可能需要先绘制多个基本图形,然后将它们组合在一起,并选择填充颜色来达到预期的视觉效果。

请看以下示例,我们将在PDF中绘制一个填充了颜色的星形:

func drawStar(pageCanvas *gopdf.Canvas, x, y, r float64) {
    // 绘制五角星
    pageCanvas.MoveTo(x, y)
    for i := 0; i < 5; i++ {
        pageCanvas.LineTo(x+math.Cos((18+72*i)*math.Pi/180)*r, y+math.Sin((18+72*i)*math.Pi/180)*r)
    }
    pageCanvas.Fill(gopdf.ColorRGB{R: 1, G: 0, B: 0}) // 红色填充
    pageCanvas.ClosePath()
}

func main() {
    // ...之前的PDF初始化代码...

    // 获取画布对象
    pageCanvas := doc.Canvas()

    // 绘制一个星形
    drawStar(pageCanvas, 50, 200, 30)

    // 保存文档
    doc.Save()
}

在上面的代码中, drawStar 函数是一个自定义函数,它在给定的点 (x, y) 为中心绘制一个半径为 r 的星形。通过循环计算出五角星的五个顶点,并使用 LineTo() 方法连接它们。最后,使用 Fill() 方法对图形进行填充。通过调整 MoveTo() LineTo() 中的坐标,可以绘制出各种不同的图形。

5.2 保存和输出PDF文件

5.2.1 PDF文件的保存策略

一旦图形绘制完毕,我们需要将PDF文件保存到磁盘。gopdf库提供了一个简单的方法 Save() 来完成这个任务。在调用 Save() 之前,确保所有的图形绘制都已完成,因为任何后续的绘制操作都需要在新的PDF文档中执行。

5.2.2 优化PDF文件大小和兼容性

在保存PDF文件时,我们还需要考虑到文件的大小和兼容性问题。例如,如果PDF文件过大,可能会影响加载速度,尤其是通过网络传输时。为了优化文件大小,我们可以选择移除文档中的非必要内容,或者使用更高效的数据压缩方法。在gopdf库中,可以通过配置不同的压缩算法来实现这一目标。

兼容性方面,我们需要确保PDF文档可以在不同的PDF阅读器上正常打开,特别是在移动设备和旧版PDF阅读器上。gopdf库默认生成的PDF是符合标准的,但有时可能需要根据特定的阅读器对PDF进行微调。

此外,为了提高文档的兼容性,还可以在文档中嵌入必要的字体和资源,这样即使用户的设备上没有安装相应的字体,也能够正确显示PDF中的文本。

以下是调整gopdf配置以优化PDF大小和兼容性的代码示例:

func main() {
    // ...之前的PDF初始化和绘制代码...

    // 配置PDF选项,包括压缩选项
    pdfOptions := gopdf.Config{
        PageSize: gopdf.Point{X: 210, Y: 297},
        Compress: true, // 启用压缩
    }

    doc.Start(pdfOptions)
    // ...省略其他绘制代码...

    // 保存文档
    err := doc.Save()
    if err != nil {
        panic(err)
    }
}

在上面的配置中,我们设置了页面大小,并启用了压缩功能。压缩可以减少PDF文件的总体大小,但可能会增加生成PDF文件所需的时间。

至此,第五章已经结束了。我们不仅学习了如何在PDF中绘制基本和复杂的图形,还学习了如何优化和保存PDF文件。在下一章中,我们将深入探讨gopdf社区的优化历程和应用范围。



# 6. gopdf社区优化与应用范围

## 6.1 gopdf在开源社区的优化历程

### 6.1.1 社区贡献与功能改进
自gopdf库诞生以来,开源社区的力量对其发展起到了重要的推动作用。社区中的贡献者通过提交pull requests、报告bug和提出新的功能需求,不断推动gopdf库的功能丰富和完善。例如,社区贡献者针对早期版本中某些特定图像格式支持不足的问题,贡献了新的代码,使其能够支持更多种类的图像格式。

通过社区的共同努力,gopdf库不仅增加了对加密和签名PDF文件的支持,还提高了处理大型文档时的性能和稳定性。这些优化不仅增强了库的功能性,也极大地提升了用户体验。

### 6.1.2 社区提供的扩展库与资源
除了直接对gopdf库本身的优化外,社区还创建了许多扩展库和资源,帮助开发者解决特定需求。例如,有扩展库专注于提供PDF表单的生成和编辑功能,还有资源库提供了大量的预设模板,方便快速生成常见的文档格式。

这些扩展和资源的加入,进一步拓宽了gopdf库的应用场景,使其成为IT领域文档处理的得力工具。

## 6.2 gopdf库在不同领域的应用案例

### 6.2.1 商业报告和演示文稿
gopdf在生成商业报告和演示文稿方面展现了极高的灵活性和可定制性。开发者可以利用gopdf库快速将数据转换成专业格式的PDF文档,比如财务报表、市场分析报告等。通过设置不同的页面模板和样式,gopdf能够帮助创建出既美观又易于阅读的演示文稿。

此外,gopdf支持在PDF中添加图表和图形,这样可以直观地展示数据变化,为商业决策提供有力支撑。由于PDF文件的跨平台兼容性,这些报告和演示文稿可以轻松地在不同设备和操作系统间共享。

### 6.2.2 网站后台文档生成与管理
网站后台常常需要生成各种文档,如发票、收据、用户协议等。gopdf库通过简单的API调用,就可以将这些文档格式化为PDF,大大减轻了后台服务的工作负担。它还可以帮助开发者创建具有统一风格的文档模板,使得每一份生成的文档都具有一致的专业外观。

在文档管理方面,gopdf可以与各种数据库和存储系统集成,实现文档的自动化存储和检索。这种集成不仅提高了文档管理的效率,也增强了数据的安全性,因为PDF文件通常难以被篡改,可以作为法律文档的可靠格式。

// 示例代码:使用gopdf生成包含图表的PDF报告 pdf := gopdf.GoPdf{} pdf.Start(gopdf.Config{PageSize: *gopdf.PageSizeA4})

// 添加文本内容 pdf.AddPage() pdf.SetFont(&gopdf.Font{Type: "Helvetica"}, 12) pdf.Write(20, "2023年第一季度财务报告")

// 添加图表数据(示意) // 在实际应用中,可以使用图表库生成图表后,将其转换为图像插入PDF // pdf.Image(imgPath, x, y, width, height)

// 保存PDF文件 err := pdf.WriteFile("financial_report.pdf") if err != nil { log.Fatal(err) } ```

通过上述章节内容,可以看到gopdf库在IT和相关领域中的广泛应用,以及社区对这一库的持续优化和扩展,使其成为处理文档不可或缺的工具。

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

简介:gopdf是一个Go语言库,支持在应用程序中轻松创建和编辑PDF文件。它提供了一系列API,允许开发者添加文本、图像、链接和自定义图形到PDF文档中。通过实例展示如何使用gopdf导入库、创建文档实例、添加页面、插入文本、图片和链接,以及绘制基本图形和保存文件。该库适用于多种场景,如报告和发票,并且社区的持续优化使其成为一个强大的工具。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值