跳至頁尾內容
.NET幫助

LiteDB .NET(對開發者的解析)。

LiteDB 是一個簡單、快速且輕量的嵌入式 .NET 文件資料庫。 LiteDB .NET 的靈感來自 MongoDB 資料庫,其 API 與 MongoDB 官方的 .NET API 非常相似。 LiteDB 是一個無伺服器的資料庫,對於小型專案和移動應用程式來說非常合適。

本文將為您提供準確的指引,讓您在專案中利用 LiteDB 的功能。 我們還介紹了 IronPDF 的使用,這是一個由 Iron Software 製作的 .NET 程式庫,用於生成和操作 PDF,以及如何使用它將 LiteDB 資料庫的內容輸出為 PDF 以供查看和分享。

LiteDB 的關鍵特性

  1. 嵌入式資料庫:無需單獨的伺服器。 LiteDB 在您的應用程式過程中運行。
  2. 單一資料文件:所有的資料都可以儲存在一個文件中,簡化了部署和備份。
  3. BSON 格式:使用 BSON 格式來儲存,確保快速的讀寫操作。
  4. LINQ 支援:完全支援 LINQ 查詢,讓 .NET 開發者直觀易用。
  5. ACID 交易:支援 ACID 交易以確保資料完整性。
  6. 跨平台:可在 Windows、Linux 和 macOS 上運行。

在 .NET 專案中設置 LiteDB

在 Visual Studio 中打開您的專案。 然後,在解決方案總管中右鍵點擊您的專案,選擇"管理 NuGet 套件"。搜尋 LiteDB 並安裝,以便輕鬆將此資料庫解決方案整合到您的專案中。

或者,您可以使用套件管理器主控台來安裝它。 要在 NuGet 套件管理器主控台中安裝 LiteDB,使用以下命令:

Install-Package LiteDB

LiteDB 入門

安裝後,您可以在您的應用程式中開始使用 LiteDB。 讓我們通過一些範例來說明它的用法。

範例 1:建立和插入資料

首先,讓我們建立一個簡單的 Product 類來表示我們的資料:

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}
public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}
Public Class Product
    Public Property Id As Integer
    Public Property Name As String
    Public Property Price As Decimal
End Class
$vbLabelText   $csharpLabel

接下來,我們將建立一個資料庫並插入一些產品:

using LiteDB;
using System;

class Program
{
    static void Main()
    {
        // Open the database (or create it if it doesn't exist)
        using (var db = new LiteDatabase(@"MyData.db"))
        {
            // Get a collection (or create, if it doesn't exist)
            var products = db.GetCollection<Product>("products");

            // Create a list of products to insert into the database
            var productList = new[]
            {
                new Product { Id = 201, Name = "Apple", Price = 0.99m },
                new Product { Id = 202, Name = "Banana", Price = 0.59m },
                new Product { Id = 203, Name = "Orange", Price = 0.79m },
                new Product { Id = 204, Name = "Grape", Price = 2.99m },
                new Product { Id = 205, Name = "Watermelon", Price = 4.99m }
            };

            // Insert each product into the collection
            foreach (var product in productList)
            {
                products.Insert(product);
            }

            Console.WriteLine("Product inserted successfully.");
        }
    }
}
using LiteDB;
using System;

class Program
{
    static void Main()
    {
        // Open the database (or create it if it doesn't exist)
        using (var db = new LiteDatabase(@"MyData.db"))
        {
            // Get a collection (or create, if it doesn't exist)
            var products = db.GetCollection<Product>("products");

            // Create a list of products to insert into the database
            var productList = new[]
            {
                new Product { Id = 201, Name = "Apple", Price = 0.99m },
                new Product { Id = 202, Name = "Banana", Price = 0.59m },
                new Product { Id = 203, Name = "Orange", Price = 0.79m },
                new Product { Id = 204, Name = "Grape", Price = 2.99m },
                new Product { Id = 205, Name = "Watermelon", Price = 4.99m }
            };

            // Insert each product into the collection
            foreach (var product in productList)
            {
                products.Insert(product);
            }

            Console.WriteLine("Product inserted successfully.");
        }
    }
}
Imports LiteDB
Imports System

Friend Class Program
	Shared Sub Main()
		' Open the database (or create it if it doesn't exist)
		Using db = New LiteDatabase("MyData.db")
			' Get a collection (or create, if it doesn't exist)
			Dim products = db.GetCollection(Of Product)("products")

			' Create a list of products to insert into the database
			Dim productList = {
				New Product With {
					.Id = 201,
					.Name = "Apple",
					.Price = 0.99D
				},
				New Product With {
					.Id = 202,
					.Name = "Banana",
					.Price = 0.59D
				},
				New Product With {
					.Id = 203,
					.Name = "Orange",
					.Price = 0.79D
				},
				New Product With {
					.Id = 204,
					.Name = "Grape",
					.Price = 2.99D
				},
				New Product With {
					.Id = 205,
					.Name = "Watermelon",
					.Price = 4.99D
				}
			}

			' Insert each product into the collection
			For Each product In productList
				products.Insert(product)
			Next product

			Console.WriteLine("Product inserted successfully.")
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

程式碼描述

此程式碼初始化了對名為"MyData.db"的 LiteDB 資料庫的連接,並檢索名為"products"的集合。然後,它建立一個包含各種屬性(例如 ID、名稱和價格)的 Product 物件陣列。陣列中的每個產品都會插入到資料庫中的"products"集合中。 成功插入所有產品後,它會將確認資訊列印到控制台。

輸出為:

LiteDB .NET(開發人員工作原理):圖1 - 前一個程式碼的控制台輸出

範例:簡化使用者資料管理

想像一下,您正在開發一個管理使用者帳戶的移動應用程式。 每個使用者都有一個包含他們姓名、電子郵件地址、偏好(以 JSON 物件儲存)以及收藏項列表的個人資料。 以下是 LiteDb.NET 如何簡化您的資料儲存:

此程式碼定義了一個 User 類來表示使用者資料,並定義了一個 UserManager 類來管理 LiteDb.NET 資料庫中的使用者操作。

using LiteDB;
using System.Collections.Generic;

public class User
{
    [BsonId]
    public string Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public Dictionary<string, string> Preferences { get; set; }
    public List<string> FavoriteItems { get; set; }
} 

public class UserManager
{
    private readonly LiteDatabase db;

    public UserManager(string connectionString)
    {
       db = new LiteDatabase(connectionString);
    }

    public void SaveUser(User user)
    {
        var collection = db.GetCollection<User>("users");
        collection.Insert(user);
    }

    public User GetUser(string userId)
    {
        var collection = db.GetCollection<User>("users");
        return collection.FindById(userId);
    }

    public void UpdateUser(User user)
    {
        var collection = db.GetCollection<User>("users");
        collection.Update(user);
    }

    public void DeleteUser(string userId)
    {
        var collection = db.GetCollection<User>("users");
        collection.Delete(userId);
    }
}
using LiteDB;
using System.Collections.Generic;

public class User
{
    [BsonId]
    public string Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public Dictionary<string, string> Preferences { get; set; }
    public List<string> FavoriteItems { get; set; }
} 

public class UserManager
{
    private readonly LiteDatabase db;

    public UserManager(string connectionString)
    {
       db = new LiteDatabase(connectionString);
    }

    public void SaveUser(User user)
    {
        var collection = db.GetCollection<User>("users");
        collection.Insert(user);
    }

    public User GetUser(string userId)
    {
        var collection = db.GetCollection<User>("users");
        return collection.FindById(userId);
    }

    public void UpdateUser(User user)
    {
        var collection = db.GetCollection<User>("users");
        collection.Update(user);
    }

    public void DeleteUser(string userId)
    {
        var collection = db.GetCollection<User>("users");
        collection.Delete(userId);
    }
}
Imports LiteDB
Imports System.Collections.Generic

Public Class User
	<BsonId>
	Public Property Id() As String
	Public Property Name() As String
	Public Property Email() As String
	Public Property Preferences() As Dictionary(Of String, String)
	Public Property FavoriteItems() As List(Of String)
End Class

Public Class UserManager
	Private ReadOnly db As LiteDatabase

	Public Sub New(ByVal connectionString As String)
	   db = New LiteDatabase(connectionString)
	End Sub

	Public Sub SaveUser(ByVal user As User)
		Dim collection = db.GetCollection(Of User)("users")
		collection.Insert(user)
	End Sub

	Public Function GetUser(ByVal userId As String) As User
		Dim collection = db.GetCollection(Of User)("users")
		Return collection.FindById(userId)
	End Function

	Public Sub UpdateUser(ByVal user As User)
		Dim collection = db.GetCollection(Of User)("users")
		collection.Update(user)
	End Sub

	Public Sub DeleteUser(ByVal userId As String)
		Dim collection = db.GetCollection(Of User)("users")
		collection.Delete(userId)
	End Sub
End Class
$vbLabelText   $csharpLabel

此實現有效地利用了 LiteDb.NET 的功能來管理使用者資料。 該 User 類儲存使用者資訊,而 UserManager 類則提供在資料庫中保存、檢索、更新和刪除使用者的方法。

LiteDB,適用於 .NET 的嵌入式 NoSQL 資料庫

LiteDB 非常適合小到中型應用程式,尤其是在不需要使用者並行的情況下。 例如,這是個人控制台應用程式非常適合的地方,您可以迅速簡單地儲存資料。 完全用 C# 開發,重量輕,占用空間不到 450KB,不依賴外部依賴項。

在他們的 GitHub 頁面 上列出的一些要點:

  1. 無伺服器的 NoSQL 文件儲存
  2. 簡單的 API,類似於 MongoDB
  3. 執行緒安全
  4. 完全用 C# 編寫,LiteDB 與 .NET 4.5、NETStandard 1.3/2.0 相容,並打包成一個不到 450KB 的 DLL 文件。
  5. 交易支援的 ACID
  6. 寫入故障後的資料恢復(WAL 日誌文件)
  7. 使用AES加密技術進行資料文件加密
  8. 您可以輕鬆地將您的簡單 CLR 物件(POCO)類映射到 BsonDocument,可以使用 LiteDB 提供的屬性或流利映射器 API。
  9. 存文件和資料流(類似於 MongoDB 中的 GridFS)
  10. 單一資料文件儲存(類似於 SQLite)
  11. 為快速搜索建立文件字段索引
  12. 查詢的 LINQ 支援
  13. 類似 SQL 的命令以存取/轉換資料
  14. LiteDB Studio-漂亮的使用者介面進行資料存取
  15. 開源且對任何人免費-包括商業用途

IronPDF 介紹:C# PDF 程式庫

LiteDB .NET(開發人員工作原理):圖2 - IronPDF 網頁

IronPDF,一流的 C# PDF 程式庫,促進了 建立編輯操作 PDF 在 .NET 專案中無縫實現。 它提供了一個綜合的 API 用於處理像 HTML 到 PDF 的轉換、動態 PDF 生成和資料抽取等任務。 利用 .NET Chromium 引擎來確保 HTML 精準呈現為 PDF 文件,滿足跨 .NET Core、.NET Standard 和 .NET Framework 專案的多種需求。 IronPDF 保證了從 HTML 內容生成 PDF 的準確性、簡單性和效率,且支援網頁應用程式、桌面應用程式以及控制台應用程式。

安裝 IronPDF 程式庫

要在您的專案中啟用 IronPDF,請在 Visual Studio 中透過 NuGet 套件管理器安裝程式庫。 然後只需遵循這些簡單的步驟即可:

  1. 打開 Visual Studio 並導航到解決方案總管。
  2. 右鍵點擊依賴項並選擇"管理 NuGet 套件"選項。
  3. 選擇"瀏覽"選項卡並搜尋"IronPDF"。
  4. 選擇 IronPDF 並點擊"安裝"。

或者,在 Visual Studio 中,您可以利用套件管理主控台來通過執行以下命令安裝程式庫:

Install-Package IronPdf

IronPDF 的範例用法與 LiteDB

以下是使用 IronPDF 從 HTML 內容生成 PDF 的簡單程式碼範例,並使用 'using' 語句確保資源的正確釋放。 在此我們結合 LiteDB 和 IronPDF 的功能,以展示如何您可以將 LiteDB 中的資料輸出為 PDF 以供查看:

using LiteDB;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using IronPdf;

class Program
{
    static void Main()
    {
        using (var db = new LiteDatabase(@"MyData.db"))
        {
            // Retrieve the 'products' collection or create it
            var products = db.GetCollection<Product>("products");

            // Add some initial products to the collection
            var productList = new[]
            {
                new Product { Id = 101, Name = "Apple", Price = 0.99m },
                new Product { Id = 102, Name = "Banana", Price = 0.59m },
                new Product { Id = 103, Name = "Orange", Price = 0.79m },
                new Product { Id = 104, Name = "Grape", Price = 2.99m },
                new Product { Id = 105, Name = "Watermelon", Price = 4.99m }
            };

            // Insert products into the LiteDB collection
            foreach (var product in productList)
            {
                products.Insert(product);
            }

            Console.WriteLine("Product inserted successfully.");

            // Fetch all products from the database
            var allProducts = GetAllProducts(db);

            // Generate HTML content from the product list
            string htmlContent = GenerateHtml(allProducts);

            // Generate the PDF from the HTML content
            GeneratePDF(htmlContent);

            Console.WriteLine("PDF generated successfully.");
        }
    }

    public static List<Product> GetAllProducts(LiteDatabase db)
    {
        var products = db.GetCollection<Product>("products");
        return products.FindAll().ToList();
    }

    public static void GeneratePDF(string data)
    {
        // Set your IronPDF license key here
        IronPdf.License.LicenseKey = "Your-License-Key";
        Console.WriteLine("PDF Generating Started...");

        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();
        Console.WriteLine("PDF Processing ....");

        // Render the HTML as a PDF
        var pdf = renderer.RenderHtmlAsPdf(data);

        // Save the PDF to a file
        string filePath = "Data.pdf";
        pdf.SaveAs(filePath);

        Console.WriteLine($"PDF Generation Completed, File Saved as {filePath}");
    }

    public static string GenerateHtml(List<Product> products)
    {
        // Build HTML table from product list
        StringBuilder htmlBuilder = new StringBuilder();
        htmlBuilder.Append("<html><head><style>table { width: 100%; border-collapse: collapse; } th, td { border: 1px solid black; padding: 8px; text-align: left; }</style></head><body>");
        htmlBuilder.Append("<h1>Product List</h1>");
        htmlBuilder.Append("<table><tr><th>ID</th><th>Name</th><th>Price</th></tr>");

        // Add each product row to the HTML table
        foreach (var product in products)
        {
            htmlBuilder.Append($"<tr><td>{product.Id}</td><td>{product.Name}</td><td>{product.Price:C}</td></tr>");
        }

        htmlBuilder.Append("</table></body></html>");
        return htmlBuilder.ToString();
    }
}
using LiteDB;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using IronPdf;

class Program
{
    static void Main()
    {
        using (var db = new LiteDatabase(@"MyData.db"))
        {
            // Retrieve the 'products' collection or create it
            var products = db.GetCollection<Product>("products");

            // Add some initial products to the collection
            var productList = new[]
            {
                new Product { Id = 101, Name = "Apple", Price = 0.99m },
                new Product { Id = 102, Name = "Banana", Price = 0.59m },
                new Product { Id = 103, Name = "Orange", Price = 0.79m },
                new Product { Id = 104, Name = "Grape", Price = 2.99m },
                new Product { Id = 105, Name = "Watermelon", Price = 4.99m }
            };

            // Insert products into the LiteDB collection
            foreach (var product in productList)
            {
                products.Insert(product);
            }

            Console.WriteLine("Product inserted successfully.");

            // Fetch all products from the database
            var allProducts = GetAllProducts(db);

            // Generate HTML content from the product list
            string htmlContent = GenerateHtml(allProducts);

            // Generate the PDF from the HTML content
            GeneratePDF(htmlContent);

            Console.WriteLine("PDF generated successfully.");
        }
    }

    public static List<Product> GetAllProducts(LiteDatabase db)
    {
        var products = db.GetCollection<Product>("products");
        return products.FindAll().ToList();
    }

    public static void GeneratePDF(string data)
    {
        // Set your IronPDF license key here
        IronPdf.License.LicenseKey = "Your-License-Key";
        Console.WriteLine("PDF Generating Started...");

        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();
        Console.WriteLine("PDF Processing ....");

        // Render the HTML as a PDF
        var pdf = renderer.RenderHtmlAsPdf(data);

        // Save the PDF to a file
        string filePath = "Data.pdf";
        pdf.SaveAs(filePath);

        Console.WriteLine($"PDF Generation Completed, File Saved as {filePath}");
    }

    public static string GenerateHtml(List<Product> products)
    {
        // Build HTML table from product list
        StringBuilder htmlBuilder = new StringBuilder();
        htmlBuilder.Append("<html><head><style>table { width: 100%; border-collapse: collapse; } th, td { border: 1px solid black; padding: 8px; text-align: left; }</style></head><body>");
        htmlBuilder.Append("<h1>Product List</h1>");
        htmlBuilder.Append("<table><tr><th>ID</th><th>Name</th><th>Price</th></tr>");

        // Add each product row to the HTML table
        foreach (var product in products)
        {
            htmlBuilder.Append($"<tr><td>{product.Id}</td><td>{product.Name}</td><td>{product.Price:C}</td></tr>");
        }

        htmlBuilder.Append("</table></body></html>");
        return htmlBuilder.ToString();
    }
}
Imports LiteDB
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports IronPdf

Friend Class Program
	Shared Sub Main()
		Using db = New LiteDatabase("MyData.db")
			' Retrieve the 'products' collection or create it
			Dim products = db.GetCollection(Of Product)("products")

			' Add some initial products to the collection
			Dim productList = {
				New Product With {
					.Id = 101,
					.Name = "Apple",
					.Price = 0.99D
				},
				New Product With {
					.Id = 102,
					.Name = "Banana",
					.Price = 0.59D
				},
				New Product With {
					.Id = 103,
					.Name = "Orange",
					.Price = 0.79D
				},
				New Product With {
					.Id = 104,
					.Name = "Grape",
					.Price = 2.99D
				},
				New Product With {
					.Id = 105,
					.Name = "Watermelon",
					.Price = 4.99D
				}
			}

			' Insert products into the LiteDB collection
			For Each product In productList
				products.Insert(product)
			Next product

			Console.WriteLine("Product inserted successfully.")

			' Fetch all products from the database
			Dim allProducts = GetAllProducts(db)

			' Generate HTML content from the product list
			Dim htmlContent As String = GenerateHtml(allProducts)

			' Generate the PDF from the HTML content
			GeneratePDF(htmlContent)

			Console.WriteLine("PDF generated successfully.")
		End Using
	End Sub

	Public Shared Function GetAllProducts(ByVal db As LiteDatabase) As List(Of Product)
		Dim products = db.GetCollection(Of Product)("products")
		Return products.FindAll().ToList()
	End Function

	Public Shared Sub GeneratePDF(ByVal data As String)
		' Set your IronPDF license key here
		IronPdf.License.LicenseKey = "Your-License-Key"
		Console.WriteLine("PDF Generating Started...")

		' Create a PDF renderer
		Dim renderer = New ChromePdfRenderer()
		Console.WriteLine("PDF Processing ....")

		' Render the HTML as a PDF
		Dim pdf = renderer.RenderHtmlAsPdf(data)

		' Save the PDF to a file
		Dim filePath As String = "Data.pdf"
		pdf.SaveAs(filePath)

		Console.WriteLine($"PDF Generation Completed, File Saved as {filePath}")
	End Sub

	Public Shared Function GenerateHtml(ByVal products As List(Of Product)) As String
		' Build HTML table from product list
		Dim htmlBuilder As New StringBuilder()
		htmlBuilder.Append("<html><head><style>table { width: 100%; border-collapse: collapse; } th, td { border: 1px solid black; padding: 8px; text-align: left; }</style></head><body>")
		htmlBuilder.Append("<h1>Product List</h1>")
		htmlBuilder.Append("<table><tr><th>ID</th><th>Name</th><th>Price</th></tr>")

		' Add each product row to the HTML table
		For Each product In products
			htmlBuilder.Append($"<tr><td>{product.Id}</td><td>{product.Name}</td><td>{product.Price:C}</td></tr>")
		Next product

		htmlBuilder.Append("</table></body></html>")
		Return htmlBuilder.ToString()
	End Function
End Class
$vbLabelText   $csharpLabel

此程式碼連接到一個 LiteDB 資料庫,新增了一個產品列表,檢索所有產品,並生成產品列表的 HTML 表示。然後使用 IronPDF 程式庫將此 HTML 內容用於建立 PDF 文件。 該過程包括增加產品、取得產品、將產品列表轉換為 HTML 及生成 PDF 的方法。

輸出

LiteDB .NET(開發人員工作原理):圖3 - 前一個程式碼的控制台輸出

PDF 文件輸出

LiteDB .NET(開發人員工作原理):圖4 - 前一個程式碼的輸出 PDF

結論

LiteDB 向 C# 開發者提供了一個輕量級、無伺服器的嵌入式文件資料庫解決方案,非常適合小型專案和移動應用程式,擁有像 MongoDB 靈感的 API、嵌入式資料庫和跨平台相容性等特性。

同時,IronPDF作為一流的 C# PDF 程式庫出現,通過其 HTML 到 PDF 的轉換和 NuGet 整合大大簡化了 .NET 專案中的 PDF 生成和操作。 從資料庫管理中出色的 LiteDB 到 PDF 處理上卓越的 IronPDF,兩者都為開發者提供了寶貴的工具。

IronPDF 提供 免費試用以解鎖其在 PDF 生成和操作中的全部潛力。

常見問題

如何在C#中將HTML內容轉換為PDF?

您可以使用IronPDF在C#中將HTML內容轉換為PDF。該程式庫提供了如RenderHtmlAsPdf的方法,允許將HTML字串轉換為PDF文件。

整合LiteDB與.NET專案的最佳方式是什麼?

要整合LiteDB到.NET專案中,您可以使用Visual Studio中的NuGet Package Manager安裝LiteDB。這允許您在應用程式中直接使用C#管理您的資料庫。

如何從LiteDB資料生成PDF?

要從LiteDB資料生成PDF,您可以使用IronPDF。藉由從LiteDB提取資料並使用IronPDF的功能渲染,您可以建立用於報告或共用目的的PDF文件。

我可以在C#中使用IronPDF操作現有的PDF文件嗎?

是的,IronPDF可以用來操作現有的PDF文件。它提供了在C#應用程式中編輯、合併和提取PDF內容的功能。

LiteDB可以用於移動應用程式嗎?

是的,LiteDB特別適合用於移動應用程式,因為其輕量、無伺服器性質,以及能夠將資料儲存在單個文件中。

LiteDB整合的一些常見故障排除步驟是什麼?

LiteDB整合的常見故障排除步驟包括檢查NuGet安裝是否正確、確保資料庫文件路徑可存取,並確認您的專案.NET版本與LiteDB相容。

如何使用LiteDB確保資料的完整性?

LiteDB支持ACID交易,這確保了資料的完整性和可靠性。您可以使用交易來維持一致性並處理並發資料修改。

使用IronPDF在.NET中生成PDF的好處是什麼?

IronPDF提供了簡便的HTML到PDF轉換、高精確的渲染和全面的PDF操作功能,使其成為.NET應用中生成和處理PDF的理想選擇。

Jacob Mellor,首席技術官 @ Team Iron
首席技術官

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

Jacob擁有曼徹斯特大學的土木工程一等榮譽學士學位(BEng),於1998-2001年之間獲得。在1999年於倫敦創辦他的第一家軟體公司並於2005年建立了他的第一批.NET元組件後,他專注於解決Microsoft生態系統中的複雜問題。

他的旗艦IronPDF和Iron Suite .NET程式庫在全球獲得了超過3000萬次NuGet安裝依據,他的基礎程式碼基繼續支援著世界各地開發者使用的工具。擁有25年的商業經驗和41年的程式設計專業知識,他仍專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話