产品比较

IronPDF和PDFium.NET比较

发布 2023年一月25日
分享:

随着技术的进步和互联网使用的增加,数据主要以数字形式发送和接收,主要是PDF文件。

在C#中处理PDF文档对开发者来说最近一直是一个难题。在许多情况下,开发者需要在他们的应用程序中加入PDF查看和PDF生成的功能。 考虑到这一点,已经开发了许多库来便利这些及类似任务。

这篇文章将比较两个最受.NET和.NET Core开发者欢迎的PDF库。 这两个图书馆是

  • IronPDF .NET 库
  • PDFium.NET SDK 库

    IronPDF 和 PDFium.NET 可以在 .NET 应用程序中创建、操作和打印 PDF 文件。 出现的问题是:应该使用哪个库? 浏览这篇文章将使您能够亲自体验。

    首先,让我们看看这两个库各自提供了哪些功能,然后我们再进行比较。

PDFium.NET SDK 库及其功能

PDFium.NET 用于创建、修改和查看 PDF 文件。 (可移植文件格式). 它提供了一个高级C#/VB.NET API,用于在Web服务器上动态创建PDF,并在现有桌面或Web应用程序中实现保存为PDF功能。

PDFium.NET的突出特点包括:

  • 从头开始创建PDF文件,或者从一系列扫描的图像中创建
  • 随时可用的工具栏用于编辑、分割、合并和操作PDF文件,包括文本提取。
  • 嵌入独立的 Winforms 或 WPF PDF 查看器控件支持缩放功能。
  • 支持 .NET 2.0+、.NET 6、Standard、Core、Mono、Microsoft Azure
  • 它还适用于Windows XP和Mac OS。
  • 支持全部的PDF渲染功能
  • 高性能PDF查看器,支持搜索、打印和编辑PDF文件。
  • 极速文本处理引擎

IronPDF 及其主要功能

IronPDF .NET PDF库是专为开发者量身定制的,特别是为C#开发者设计的。 使用这个惊人的PDF库,您可以轻松地将PDF查看功能整合到您的.NET项目中。

IronPDF内置了Chromium引擎,可以非常轻松地将HTML转换为PDF。 这不需要任何复杂的底层API来操作PDF文件。 它可以处理HTML源文件,如HTML文档、JavaScript文件和ASPX网页。

IronPDF可以自定义PDF,包括添加自定义页眉和页脚、水印等等。 它还让开发者轻松读取PDF文本和提取图形。

IronPDF for .NET的突出功能包括:

  • 使用HTML4/5、CSS和JavaScript创建PDF文档
  • 加载URL时使用自定义网络登录凭证、用户代理、代理、Cookie、HTTP头和表单变量。
  • 程序化完成HTML/PDF表单字段。
  • 从PDF文件中提取文本和图形
  • 更新 PDF 页面的新内容。
  • 向 PDF 添加和自定义页眉和页脚。
  • 合并和分割PDF文档。
  • 将 ASP.NET 网页表单转换为可打印的 PDF 文件。
  • 将HTML文件/URL转换为PDF。
  • 不使用Adobe Acrobat Reader打印PDF文件。

    IronPDF库适用于几乎所有与C#兼容的操作系统和框架,包括以下内容:

  • .NET Core 2.1、3.0、3.1、.NET 5、6 和 7
  • .NET Standard 2.0 兼容,具有普遍兼容性
  • Azure、AWS、Docker、Linux、Windows

    文章的其余部分如下:

  1. 安装 IronPDF C# 库
  2. PDFium.NET SDK 安装
  3. 创建 PDF 文档
  4. 从多个图像创建PDF
  5. 数字签名 PDF
  6. 定价和许可
  7. 结论

1. IronPDF C# 库安装**

有几种不同的方法可以下载和安装 IronPDF 库。 以下是最简单的方法:

  1. 使用 Visual Studio
  2. 开发人员命令提示符
  3. 直接下载 NuGet 软件包
  4. 下载 IronPDF.DLL 库

1.1. 使用 Visual Studio

在您的Visual Studio项目中,从“工具”菜单或在解决方案资源管理器中右键单击您的项目并选择“管理NuGet包”。 这两个选项在下面的截图中显示。

IronPDf 与 PDFium.NET 的比较,图 1:使用工具菜单访问 NuGet 包管理器
IronPDf 和 PDFium.NET 的比较,图 2:使用解决方案资源管理器访问 NuGet 包管理器

打开 NuGet 软件包管理器后,浏览 IronPDF 软件包并安装,如下图所示。

IronPDf 与 PDFium.NET 的比较,图 3:使用 NuGet 软件包管理器安装 IronPDF 库

1.2.使用开发人员命令提示符

IronPDF 也可以通过开发者命令提示符下载。 按照以下步骤进行:

  • 从工具菜单中打开开发者命令提示符或包管理器控制台
  • 键入以下命令
Install-Package IronPdf
  • 按下回车键
  • 这将下载并安装库

1.3.直接下载 NuGet 软件包

IronPDF 也可以通过访问 NuGet 网站直接下载。步骤如下:

1.4. 通过下载库安装IronPDF

您还可以 直接下载 IronPDF.DLL 文件 来自网站。

IronPDf 与 PDFium.NET 的比较,图 4:从 IronPDF 网站下载 IronPDF 库 DLL

在您的项目中通过以下步骤引用IronPDF库:

  • 右键单击解决方案资源管理器中的解决方案并选择引用
  • 浏览 IronPDF.dll 库
  • 点击确定!

    全部完成! IronPDF已下载并安装。 我们现在将开始安装 PDFium.NET SDK 库。

2. PDFium.NET 安装

我们可以使用 NuGet 包管理器或下载 PDFium Windows 安装程序来安装 PDFium.net。

  • 像在 IronPDF 中一样,在 Visual Studio 中打开 NuGet 软件包。
  • 搜索 PDFium.NET.SDK。 在您当前的项目中点击“安装”。

    IronPDf 和 PDFium.NET 的比较,图 5:PDFium.NET 搜索
  • 您还可以使用包管理器控制台进行安装。 按照 IronPDF 中提到的 "使用开发人员命令提示符 "步骤,键入以下命令:
    PM> Install-Package Pdfium.Net.SDK
  • 按下回车键。 这将下载并安装该库。

3.创建 PDF 文档

3.1.使用 IronPDF

IronPDF 提供多种生成 PDF 文件的方法。 让我们来看看两个重要的问题。

将现有 URL 转换为 PDF

HTML files into PDFs. HTML 转 PDF 使用现有的URLs处理文档。

请考虑以下源代码。

IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
using var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
Pdf.SaveAs("url.pdf");
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
using var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
Pdf.SaveAs("url.pdf");
Dim Renderer As New IronPdf.ChromePdfRenderer()
Dim Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/")
Pdf.SaveAs("url.pdf")
VB   C#

将 HTML 输入字符串转换为 PDF

以下代码片段展示了如何使用HTML字符串来渲染PDF页面。 您可以使用简单的HTML,或者将其与CSS、图片和JavaScript结合使用。

var Renderer = new IronPDF.ChromePdfRenderer();
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>");
PDF.SaveAs("pixel-perfect.pdf");
// Load external html assets: images, css and javascript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
using var AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='logo_square.png'>", @"e:\site\assets\");
AdvancedPDF.SaveAs("html-with-assets.pdf");
var Renderer = new IronPDF.ChromePdfRenderer();
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>");
PDF.SaveAs("pixel-perfect.pdf");
// Load external html assets: images, css and javascript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
using var AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='logo_square.png'>", @"e:\site\assets\");
AdvancedPDF.SaveAs("html-with-assets.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

输出结果如下

IronPDf 和 PDFium.NET 的比较,图 6:IronPDF 从 URL 和 HTML 字符串生成 PDF

3.2. 使用 PDFium.NET

它可以使用图像和文本对象即时生成PDF。 但是,它无法将URL或HTML字符串转换为PDF文件。

生成PDF的代码使用PDFium.NET如下:

public void CreatePDF()
{
    // Step 1: Initialize PDF library and create empty document
    // Return value: PdfDocument main class
    PdfCommon.Initialize();
    var doc = PdfDocument.CreateNew();  // Create a PDF document
    // Step 2: Add new page
    // Arguments: page width: 8.27", page height: 11.69", Unit of measure: inches
    //  The PDF unit of measure is point. There are 72 points in one inch.
    var page = doc.Pages.InsertPageAt(doc.Pages.Count, 8.27f * 72, 11.69f * 72);
    // Step 3: Add graphics and text contents to the page
    // Insert image from file using standard System.Drawing.Bitmap class
    using (PdfBitmap logo = PdfBitmap.FromFile(@"e:\site\assets\logo_square.png"))
    {
        PdfImageObject imageObject = PdfImageObject.Create(doc, logo, 0, 0);
        //image resolution is 300 DPI and location is 1.69 x 10.0 inches.
        imageObject.Matrix = new FS_MATRIX(logo.Width * 72 / 300, 0, 0, logo.Height * 72 / 300, 1.69 * 72, 10.0 * 72);
        page.PageObjects.Add(imageObject);
    }
    // Create fonts used for text objects
    PdfFont calibryBold = PdfFont.CreateFont(doc, "CalibriBold");
    // Insert text objects at 7.69"; 11.02" and font size is 25
    PdfTextObject textObject = PdfTextObject.Create("Sample text", 7.69f * 72, 11.02f * 72, calibryBold, 25);
    textObject.FillColor = FS_COLOR.Black;
    page.PageObjects.Add(textObject);
    // Step 5: Generate page content and save PDF file
    // argument: PDF file name
    page.GenerateContent();
    doc.Save(@"e:\site\sample_document.pdf", SaveFlags.NoIncremental);
}
public void CreatePDF()
{
    // Step 1: Initialize PDF library and create empty document
    // Return value: PdfDocument main class
    PdfCommon.Initialize();
    var doc = PdfDocument.CreateNew();  // Create a PDF document
    // Step 2: Add new page
    // Arguments: page width: 8.27", page height: 11.69", Unit of measure: inches
    //  The PDF unit of measure is point. There are 72 points in one inch.
    var page = doc.Pages.InsertPageAt(doc.Pages.Count, 8.27f * 72, 11.69f * 72);
    // Step 3: Add graphics and text contents to the page
    // Insert image from file using standard System.Drawing.Bitmap class
    using (PdfBitmap logo = PdfBitmap.FromFile(@"e:\site\assets\logo_square.png"))
    {
        PdfImageObject imageObject = PdfImageObject.Create(doc, logo, 0, 0);
        //image resolution is 300 DPI and location is 1.69 x 10.0 inches.
        imageObject.Matrix = new FS_MATRIX(logo.Width * 72 / 300, 0, 0, logo.Height * 72 / 300, 1.69 * 72, 10.0 * 72);
        page.PageObjects.Add(imageObject);
    }
    // Create fonts used for text objects
    PdfFont calibryBold = PdfFont.CreateFont(doc, "CalibriBold");
    // Insert text objects at 7.69"; 11.02" and font size is 25
    PdfTextObject textObject = PdfTextObject.Create("Sample text", 7.69f * 72, 11.02f * 72, calibryBold, 25);
    textObject.FillColor = FS_COLOR.Black;
    page.PageObjects.Add(textObject);
    // Step 5: Generate page content and save PDF file
    // argument: PDF file name
    page.GenerateContent();
    doc.Save(@"e:\site\sample_document.pdf", SaveFlags.NoIncremental);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

输出结果如下

IronPDf 与 PDFium.NET 的比较,图 7:PDFium.NET 生成 PDF

如果我们比较IronPDF和PDFium项目的输出,可以明显看到,基于IronPDF类库的输出通过HTML渲染提供了更好的结果,且无需缩放图像大小。另一方面,PDFium.NET提供了与IronPDF类似的输出,但需要缩放图像。 如果我们跳过代码中的这一行:

imageObject.Matrix = new FS_MATRIX(logo.Width * 72 / 300, 0, 0, logo.Height * 72 / 300, 1.69 * 72, 10.0 * 72);
imageObject.Matrix = new FS_MATRIX(logo.Width * 72 / 300, 0, 0, logo.Height * 72 / 300, 1.69 * 72, 10.0 * 72);
imageObject.Matrix = New FS_MATRIX(logo.Width * 72 \ 300, 0, 0, logo.Height * 72 \ 300, 1.69 * 72, 10.0 * 72)
VB   C#

输出结果将是

IronPDf 和 PDFium.NET 的比较,图 8:PDFium.NET 输出无图像缩放的 PDF

4.从多个图像创建 PDF

4.1.使用 IronPDF

在IronPDF中合并两个或更多PDF文件很简单。 使用 Merge 方法,您可以合并两个或多个 PDF 文件,每个文件之间用逗号分隔。 代码如下

using IronPdf;
var html_a = @"<p> [PDF_A] </p>
                <p> [PDF_A] 1st Page </p>
                <div style = 'page-break-after: always;' ></div>
                <p> [PDF_A] 2nd Page</p>";
var html_b = @"<p> [PDF_B] </p>
                <p> [PDF_B] 1st Page </p>
                <div style = 'page-break-after: always;' ></div>
                <p> [PDF_B] 2nd Page</p>";
var Renderer = new IronPDF.ChromePdfRenderer();
var pdfdoc_a = Renderer.RenderHtmlAsPdf(html_a);
var pdfdoc_b = Renderer.RenderHtmlAsPdf(html_b);
var merged = IronPDF.PdfDocument.Merge(pdfdoc_a, pdfdoc_b);
merged.SaveAs("Merged.PDF");
using IronPdf;
var html_a = @"<p> [PDF_A] </p>
                <p> [PDF_A] 1st Page </p>
                <div style = 'page-break-after: always;' ></div>
                <p> [PDF_A] 2nd Page</p>";
var html_b = @"<p> [PDF_B] </p>
                <p> [PDF_B] 1st Page </p>
                <div style = 'page-break-after: always;' ></div>
                <p> [PDF_B] 2nd Page</p>";
var Renderer = new IronPDF.ChromePdfRenderer();
var pdfdoc_a = Renderer.RenderHtmlAsPdf(html_a);
var pdfdoc_b = Renderer.RenderHtmlAsPdf(html_b);
var merged = IronPDF.PdfDocument.Merge(pdfdoc_a, pdfdoc_b);
merged.SaveAs("Merged.PDF");
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

4.2. 使用 PDFium.NET

使用PDFium.NET,您不仅可以将多个PDF文件合并成一个文件,还可以从源文件中选择特定的页面,并将它们组合成一个PDF文档。

下面的代码展示了如何使用ImportPages方法来实现。

public void MergePDF()
{
    //Initialize the SDK library.
    PdfCommon.Initialize();
    //Open and load a PDF document in which other files will be merged 
    using (var mainDoc = PdfDocument.Load(@"c:\test001.pdf")) // C# Read source PDF File #1
    {
        //Open one PDF document.
        using (var doc = PdfDocument.Load(@"c:\doc1.pdf")) //Read PDF File #2
        {
            //Import all pages from document
            mainDoc.Pages.ImportPages(
                doc,
                string.Format("1-{0}", doc.Pages.Count),
                mainDoc.Pages.Count
                );
        }
        //Open another PDF document.
        using (var doc = PdfDocument.Load(@"c:\doc2.pdf"))
        {
            //Import all pages from document
            mainDoc.Pages.ImportPages(
                doc,
                string.Format("1-{0}", doc.Pages.Count),
                mainDoc.Pages.Count
                );
        }
        mainDoc.Save(@"c:\ResultDocument.pdf", SaveFlags.NoIncremental);
    }
}
public void MergePDF()
{
    //Initialize the SDK library.
    PdfCommon.Initialize();
    //Open and load a PDF document in which other files will be merged 
    using (var mainDoc = PdfDocument.Load(@"c:\test001.pdf")) // C# Read source PDF File #1
    {
        //Open one PDF document.
        using (var doc = PdfDocument.Load(@"c:\doc1.pdf")) //Read PDF File #2
        {
            //Import all pages from document
            mainDoc.Pages.ImportPages(
                doc,
                string.Format("1-{0}", doc.Pages.Count),
                mainDoc.Pages.Count
                );
        }
        //Open another PDF document.
        using (var doc = PdfDocument.Load(@"c:\doc2.pdf"))
        {
            //Import all pages from document
            mainDoc.Pages.ImportPages(
                doc,
                string.Format("1-{0}", doc.Pages.Count),
                mainDoc.Pages.Count
                );
        }
        mainDoc.Save(@"c:\ResultDocument.pdf", SaveFlags.NoIncremental);
    }
}
Public Sub MergePDF()
	'Initialize the SDK library.
	PdfCommon.Initialize()
	'Open and load a PDF document in which other files will be merged 
	Using mainDoc = PdfDocument.Load("c:\test001.pdf") ' C# Read source PDF File #1
		'Open one PDF document.
		Using doc = PdfDocument.Load("c:\doc1.pdf") 'Read PDF File #2
			'Import all pages from document
			mainDoc.Pages.ImportPages(doc, String.Format("1-{0}", doc.Pages.Count), mainDoc.Pages.Count)
		End Using
		'Open another PDF document.
		Using doc = PdfDocument.Load("c:\doc2.pdf")
			'Import all pages from document
			mainDoc.Pages.ImportPages(doc, String.Format("1-{0}", doc.Pages.Count), mainDoc.Pages.Count)
		End Using
		mainDoc.Save("c:\ResultDocument.pdf", SaveFlags.NoIncremental)
	End Using
End Sub
VB   C#

5.数字签名 PDF

5.1.使用 IronPDF

如今最重要的功能之一是对PDF文档进行数字签名。 IronPDF提供了这项功能。 代码如下

using IronPdf;
// Cryptographically sign an existing PDF in 1 line of code!
new IronPDF.Signing.PdfSignature("Iron.p12", "123456").SignPdfFile("any.pdf");
/***** Advanced example for more control *****/
// Step 1. Create a PDF
var Renderer = new IronPdf.ChromePdfRenderer();
var doc = Renderer.RenderHtmlAsPDF("<h1>Testing 2048 bit digital security</h1>");
// Step 2. Create a Signature.
// You may create a .pfx or .p12 PDF signing certificate using Adobe Acrobat Reader.
var signature = new IronPDF.Signing.PdfSignature("Iron.pfx", "123456");
// Step 3. Handwritten signature graphic
signature.LoadSignatureImageFromFile("handwriting.png");
//Step 4. Sign the PDF with the PDFSignature. Multiple signing certificates may be used
doc.SignPdfWithDigitalSignature(signature);
//Step 4. The PDF is not signed until saved to file, stream or byte array.
doc.SaveAs("signed.pdf"); 
using IronPdf;
// Cryptographically sign an existing PDF in 1 line of code!
new IronPDF.Signing.PdfSignature("Iron.p12", "123456").SignPdfFile("any.pdf");
/***** Advanced example for more control *****/
// Step 1. Create a PDF
var Renderer = new IronPdf.ChromePdfRenderer();
var doc = Renderer.RenderHtmlAsPDF("<h1>Testing 2048 bit digital security</h1>");
// Step 2. Create a Signature.
// You may create a .pfx or .p12 PDF signing certificate using Adobe Acrobat Reader.
var signature = new IronPDF.Signing.PdfSignature("Iron.pfx", "123456");
// Step 3. Handwritten signature graphic
signature.LoadSignatureImageFromFile("handwriting.png");
//Step 4. Sign the PDF with the PDFSignature. Multiple signing certificates may be used
doc.SignPdfWithDigitalSignature(signature);
//Step 4. The PDF is not signed until saved to file, stream or byte array.
doc.SaveAs("signed.pdf"); 
Imports IronPdf
' Cryptographically sign an existing PDF in 1 line of code!
Call (New IronPDF.Signing.PdfSignature("Iron.p12", "123456")).SignPdfFile("any.pdf")
'''*** Advanced example for more control ****
' Step 1. Create a PDF
Dim Renderer = New IronPdf.ChromePdfRenderer()
Dim doc = Renderer.RenderHtmlAsPDF("<h1>Testing 2048 bit digital security</h1>")
' Step 2. Create a Signature.
' You may create a .pfx or .p12 PDF signing certificate using Adobe Acrobat Reader.
Dim signature = New IronPDF.Signing.PdfSignature("Iron.pfx", "123456")
' Step 3. Handwritten signature graphic
signature.LoadSignatureImageFromFile("handwriting.png")
'Step 4. Sign the PDF with the PDFSignature. Multiple signing certificates may be used
doc.SignPdfWithDigitalSignature(signature)
'Step 4. The PDF is not signed until saved to file, stream or byte array.
doc.SaveAs("signed.pdf")
VB   C#

PDFium.NET 缺乏对 PDF 文档进行数字签名的功能。

6.定价和许可

IronPDF 定价和许可

IronPDF 可用于开发简单应用程序,并且可以随时获得商业使用许可。它提供单个项目许可证、单个开发者许可证、代理机构及跨国组织许可证。 它还提供SaaS和OEM再分销许可证及支持。

所有IronPDF许可证都提供30天退款保证,以及一年的软件支持和升级服务。 最重要的是,这是一个永久许可证。 (一次性购买). Lite 包可用于 $749。 IronPDF产品绝无任何循环费用。 有关可用许可证的更多详细信息,请参阅IronPDF 许可 page.

IronPDf 和 PDFium.NET 的比较,图 9:IronPDF 许可

PDFium.NET 价格和许可

PDFium.NET 提供永久许可证。 您可以永久使用此支持的SDK版本及其注册密钥。 然而,该密钥只适用于取决于许可购买或续订日期的某些特定SDK版本。 您可以免费安装任何新版本的产品,前提是该版本是在您购买之日起一年内发布的。 PDFium.NET 还提供三种不同的许可证套餐:

  • 单项目许可证是为单一开发者和小团队设计的,适用于一个项目。 起价720美元。
  • 组织许可证是为从事多个项目的开发团队设计的。
  • 单一开发者许可证旨在为单个开发者和为多个客户工作的自由职业者设计。

    您可以访问这个 页码 了解完整的价格详情。

结论

IronPDF库是一个易于使用的库,用于创建PDF文档,无需任何复杂的API。内置的chromium引擎允许将完美的HTML转换为PDF,支持开放标准文档类型,如HTML、JS、CSS、JPG、PNG、GIF和SVG。

PDFium.NET SDK 是一个 .NET 类库,旨在满足开发人员大部分常见需求,并且价格极为合理。使用 PDFium.NET SDK,您的应用程序可以轻松显示和操作 PDF 文档。 它特别的页面对象编辑API使这个库特别强大。

PDFium.NET 许可证分为上述三个版本。 单个项目许可证为单个开发者提供便利,并且最多可为三名开发者提供便利,价格分别从720美元和900美元起。 这比IronPDF便宜一些,IronPDF的轻量版起价为$749。

IronPDF提供无限授权仅需2999美元。相比之下,PDFium.NET的组织许可证允许无限数量的开发者使用,价格为4320美元。相反,IronPDF提供的专业许可证起价为1499美元,可供10名开发者使用。这种许可证的费用大约是PDFium.NET为10名开发者提供的相应许可证费用(2880美元)的一半。

在上面的例子中,您已经看到 IronPDF 使用比 PDFium.NET 少得多的代码行来创建和修改 PDF 文档。 这有助于减轻开发者的工作负担,使他们能更高效地工作。IronPDF提供多种方法,可以从几乎任何格式转换为PDF。 相比之下,PDFium.NET 只提供了一些方法,如将图片和文本转换为PDF。

You can now 的中文翻译是:"您现在可以" 购买 Iron Software 的所有产品库 仅需两个的价格。 此外,还有一个 免费试用 来测试功能。

< 前一页
itext7从PDF中提取文本与IronPDF(代码示例教程)
下一步 >
Telerik HTML to PDF生成器与IronPDF

准备开始了吗? 版本: 2024.9 刚刚发布

免费NuGet下载 总下载量: 10,731,156 查看许可证 >