跳至頁尾內容
.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 (How It Works For Developers):圖 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.LiteDB 完全以 C# 寫成,相容於 .NET 4.5、NETStandard 1.3/2.0,打包成單一 DLL 檔案,佔用不到 450KB。 5.ACID 與完整的交易支援 6.寫入失敗後的資料復原 (WAL 記錄檔) 7.使用 AES 加密技術進行資料檔案加密 8.您可以使用屬性或 LiteDB 提供的流暢映射器 API,輕鬆地將您的 Plain Old CLR Objects (POCO) 類別映射至 BsonDocument。 9.儲存檔案和串流資料(如 MongoDB 中的 GridFS) 10.單一資料檔案儲存(如 SQLite) 11.索引文件欄位以便快速搜尋 12.支援 LINQ 查詢 13.存取/轉換資料的類似 SQL 指令 14.LiteDB Studio - 資料存取的優美使用者介面 15.開放原始碼,人人皆可自由使用 - 包括商業用途

IronPDF 簡介:C# PDF Library

LiteDB .NET (How It Works For Developers):圖 2 - IronPDF 網頁

IronPDF是首屈一指的 C# PDF 函式庫,有助於在 .NET 專案中無縫建立編輯操作PDF。 它提供了全面的 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.用滑鼠右鍵按一下 Dependencies,然後選擇"Manage NuGet Packages"(管理 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 (How It Works For Developers):圖 3 - 前述程式碼的控制台輸出

PDF 檔案輸出

LiteDB .NET (How It Works For Developers):圖 4 - 前述程式碼輸出的 PDF

結論

LiteDB 為 C# 開發人員提供輕量、無伺服器的嵌入式文件資料庫解決方案,是小型專案與行動應用程式的理想選擇,其特色包括受 MongoDB 啟發的 API、嵌入式資料庫以及跨平台相容性。

同時,IronPDF成為首屈一指的 C# PDF 函式庫,透過 HTML 至 PDF 的轉換和 NuGet 整合,簡化 .NET 專案中的 PDF 產生和操作。 LiteDB 和 IronPDF 都為開發人員提供了有價值的工具,其中 LiteDB 在資料庫管理方面表現優異,而 IronPDF 則在 PDF 處理方面表現突出。

IronPDF 提供免費試用,以發揮其在 PDF 生成和操作方面的全部潛力。

常見問題

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

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

將 LiteDB 與 .NET 專案集成的最佳方法是什麼?

要將 LiteDB 與 .NET 專案集成,可以在 Visual Studio 中使用 NuGet 包管理器來安裝 LiteDB。這樣可以讓您使用 C# 直接在應用中管理您的資料庫。

我可以如何從 LiteDB 資料生成 PDF?

要從 LiteDB 資料生成 PDF 您可以使用 IronPDF。通過從 LiteDB 提取數據並利用 IronPDF 的功能呈現它,您可以為報告或共享目的創建 PDF 文件。

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

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

可以在移動應用程序中使用 LiteDB 嗎?

是的,LiteDB 非常適合移動應用程序,因為它輕量級,無伺服器,並能夠在單個文件中儲存數據。

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

LiteDB 集成的一些常見故障排除步驟包括檢查通過 NuGet 正確安裝,確保您的數據庫文件路徑可訪問,並確認項目的 .NET 版本與 LiteDB 兼容。

如何確保使用 LiteDB 的數據完整性?

LiteDB 支持 ACID 交易以保證數據的完整性和可靠性。您可以使用交易來保持一致性並處理並發數據修改。

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

IronPDF 提供了易於 HTML 到 PDF 轉換的好處,高渲染準確性和全面的 PDF 操作功能,使其在 .NET 應用中生成和處理 PDF 的理想選擇。

雅各·梅勒(Jacob Mellor),Team Iron 首席技術長
技術長

雅各·梅勒(Jacob Mellor)是 Iron Software 的首席技術官,也是一位開創 C# PDF 技術的遠見卓識工程師。作為 Iron Software 核心程式碼庫的原始開發者,他自公司成立以來便塑造了產品架構,並與執行長卡梅隆·里明頓(Cameron Rimington)共同將公司發展為擁有 50 多名員工的企業,服務對象包括 NASA、特斯拉(Tesla)及全球政府機構。

雅各布於曼徹斯特大學(1998–2001)取得土木工程一等榮譽工程學士學位(BEng)。他在 1999 年於倫敦創立首家軟體公司,並於 2005 年開發出首批 .NET 元件,此後專注於解決微軟生態系統中的複雜問題。

其旗艦產品 IronPDF 與 Iron Suite .NET 函式庫在全球已累積超過 3,000 萬次 NuGet 安裝,其基礎程式碼持續驅動著全球廣泛使用的開發者工具。憑藉 25 年商業經驗與 41 年程式設計專業,雅各持續致力於推動企業級 C#、Java 及 Python PDF 技術的創新,同時指導新一代技術領導者。

Iron 支援團隊

我們每週 5 天、每天 24 小時皆在線。
聊天
電子郵件
請致電