跳至页脚内容
.NET 帮助

HttpListener C#(开发者用法)

在 C# 中,HttpListener 类是构建基本独立 web 服务器的最有用工具之一。 它包含在 System.Net 命名空间中,提供了一种从客户端接收和回复HTTP请求的方法。 这对于在桌面程序中管理基于 web 的通信或构建轻量级在线服务特别有帮助。

用于IronPDF的 .NET 库用于生成、修改和提取 PDF 文件的内容。 它提供了从 HTML 创建 PDF、将现有 PDF 转换为不同格式以及使用编程修改 PDF 的全面功能。

通过将 HttpListener 与 IronPDF 结合,开发人员可以设计 web 服务,以响应 HTTP 请求动态生成和服务 PDF 文档。 在需要实时生成 PDF 的应用程序中,这对于处理用户输入或其他动态数据可能非常有用。

什么是 HttpListener C#?

HttpListener 文档 是 .NET Framework 的 System.Net 命名空间中的一个简单而灵活的类,使开发人员能够在 C# 中设计简单的 HTTP 服务器。 其目的是接收来自客户的传入 HTTP 请求,处理它们,并以适当的信息进行回复。 由于不需要像 IIS 这样的功能齐全的 web 服务器,因此该类是轻量级、独立 web 服务的绝佳选择,或者用于将基于 web 的通信功能集成到桌面程序中。

HttpListener C#(开发人员工作原理):图 1

开发者可以使用 HttpListener 设置 URI 前缀来确定服务器应该监听哪些地址。 一旦监听器启动,它就会响应所有传入的请求,并使用 HttpListenerContext 来提供对请求和响应对象的访问。 这种配置使得可以创建特定于应用程序需求的 HTTP 请求处理逻辑。 HttpListener 的易用性和适应性使其在需要快速、高效且可配置的 HTTP 服务器的情况下特别有用。 HttpListener 为开发用于测试的本地服务器、在线服务原型设计或将通信协议集成到桌面应用程序提供了一个稳定的解决方案,且没有额外开销。

HttpListener C# 的特性

HttpListener 的一些特性使其成为构建 HTTP 服务器的有效工具。 其中关键的元素有:

-易用性: HttpListener 是一个易于使用的库,它允许程序员编写更少的代码来建立一个基本的 HTTP 服务器。

  • URI 前缀:可以为监听指定多个 URI 前缀,使处理各种端点的灵活性,提高服务器只对相关查询的反应。 -异步操作: HttpListener 支持异步方法,通过同时高效地处理大量请求而不中断主线程,增强了服务器的可扩展性和响应能力。 -身份验证:您可以根据需要使用 HttpListener 支持的多种身份验证技术(例如基本身份验证、摘要式身份验证、NTLM 身份验证和集成 Windows 身份验证)来保护您的端点。
  • HTTPS 支持: HttpListener 可以设置为响应 HTTPS 请求,例如,启用安全的客户端-服务器数据通信。 -请求和响应处理: HttpListener 允许您通过添加新的标头、状态代码和内容类型以及读取请求数据、标头和参数来更改响应,从而完全控制请求和响应过程。 -监听器配置: HttpListener 提供监听器特定的配置选项,以调整服务器行为,例如证书管理(用于 HTTPS)、超时和其他参数。
  • 日志记录和诊断:启用日志记录和诊断,提供详细的请求和响应信息,以便于监控和故障排除。
  • 兼容性:由于它与其他 .NET 组件和库兼容,可以与当前的 .NET 服务和应用程序实现平滑集成。 -跨平台: HttpListener 与 Windows、Linux 和 macOS 兼容,并支持 .NET Core 和 .NET 5+,提供跨平台开发灵活性。

创建和配置 HttpListener C

在 C# 中创建和配置 HttpListener 涉及多个步骤。 下面提供了一个关于如何配置 HttpListener 来处理 HTTP 请求的详细教程。

创建一个新的 .NET 项目

打开您的命令提示符、控制台或终端。

通过输入以下内容启动新建的 .NET 控制台应用程序:

dotnet new console -n HttpListenerExample
cd HttpListenerExample
dotnet new console -n HttpListenerExample
cd HttpListenerExample
SHELL

创建一个 HttpListener 实例

首先,创建 HttpListener 类的一个实例。

配置 URI 前缀

添加 URI 前缀以指定监听器应该处理哪些地址。

启动监听器

启动 HttpListener 开始监听传入的 HTTP 请求。

处理传入请求

创建一个循环以处理传入请求,处理它们并发送响应。

停止监听器

当不再需要时,优雅地停止 HttpListener

以下是这些阶段的操作示例:

using System;
using System.Net;
using System.Text;

class Program
{
    public static string url = "http://localhost:8080/";
    public static HttpListener listener;

    public static void Main(string[] args)
    {
        // Step 1: Create an HttpListener instance
        listener = new HttpListener();

        // Step 2: Configure URI prefixes
        listener.Prefixes.Add(url);

        // Step 3: Start the listener
        listener.Start();
        Console.WriteLine("Listening for requests on " + url);

        // Step 4: Handle incoming requests
        // This server will handle requests in an infinite loop
        while (true)
        {
            // GetContext method blocks until a request is received
            HttpListenerContext context = listener.GetContext();
            HttpListenerRequest request = context.Request;

            // Process the request (e.g., log the request URL)
            Console.WriteLine($"Received request for {request.Url}");

            // Create a response
            HttpListenerResponse response = context.Response;

            // Add response content
            string responseString = "<html><body>Hello, world!</body></html>";
            byte[] buffer = Encoding.UTF8.GetBytes(responseString);

            // Set the content length and type
            response.ContentLength64 = buffer.Length;
            response.ContentType = "text/html";

            // Write the response to the output stream
            using (System.IO.Stream output = response.OutputStream)
            {
                output.Write(buffer, 0, buffer.Length);
            }

            // Close the response
            response.Close();
        }
        // Step 5: Stop the listener (this code is unreachable in the current loop structure)
        // listener.Stop();
    }
}
using System;
using System.Net;
using System.Text;

class Program
{
    public static string url = "http://localhost:8080/";
    public static HttpListener listener;

    public static void Main(string[] args)
    {
        // Step 1: Create an HttpListener instance
        listener = new HttpListener();

        // Step 2: Configure URI prefixes
        listener.Prefixes.Add(url);

        // Step 3: Start the listener
        listener.Start();
        Console.WriteLine("Listening for requests on " + url);

        // Step 4: Handle incoming requests
        // This server will handle requests in an infinite loop
        while (true)
        {
            // GetContext method blocks until a request is received
            HttpListenerContext context = listener.GetContext();
            HttpListenerRequest request = context.Request;

            // Process the request (e.g., log the request URL)
            Console.WriteLine($"Received request for {request.Url}");

            // Create a response
            HttpListenerResponse response = context.Response;

            // Add response content
            string responseString = "<html><body>Hello, world!</body></html>";
            byte[] buffer = Encoding.UTF8.GetBytes(responseString);

            // Set the content length and type
            response.ContentLength64 = buffer.Length;
            response.ContentType = "text/html";

            // Write the response to the output stream
            using (System.IO.Stream output = response.OutputStream)
            {
                output.Write(buffer, 0, buffer.Length);
            }

            // Close the response
            response.Close();
        }
        // Step 5: Stop the listener (this code is unreachable in the current loop structure)
        // listener.Stop();
    }
}
Imports System
Imports System.Net
Imports System.Text

Friend Class Program
	Public Shared url As String = "http://localhost:8080/"
	Public Shared listener As HttpListener

	Public Shared Sub Main(ByVal args() As String)
		' Step 1: Create an HttpListener instance
		listener = New HttpListener()

		' Step 2: Configure URI prefixes
		listener.Prefixes.Add(url)

		' Step 3: Start the listener
		listener.Start()
		Console.WriteLine("Listening for requests on " & url)

		' Step 4: Handle incoming requests
		' This server will handle requests in an infinite loop
		Do
			' GetContext method blocks until a request is received
			Dim context As HttpListenerContext = listener.GetContext()
			Dim request As HttpListenerRequest = context.Request

			' Process the request (e.g., log the request URL)
			Console.WriteLine($"Received request for {request.Url}")

			' Create a response
			Dim response As HttpListenerResponse = context.Response

			' Add response content
			Dim responseString As String = "<html><body>Hello, world!</body></html>"
			Dim buffer() As Byte = Encoding.UTF8.GetBytes(responseString)

			' Set the content length and type
			response.ContentLength64 = buffer.Length
			response.ContentType = "text/html"

			' Write the response to the output stream
			Using output As System.IO.Stream = response.OutputStream
				output.Write(buffer, 0, buffer.Length)
			End Using

			' Close the response
			response.Close()
		Loop
		' Step 5: Stop the listener (this code is unreachable in the current loop structure)
		' listener.Stop();
	End Sub
End Class
$vbLabelText   $csharpLabel

随附的 C# 代码演示了创建和配置 HttpListener 的过程,该 HttpListener 可用作基本的 HTTP 服务器。 它首先实例化一个 HttpListener 对象,并附加一个 URI 前缀 (http://localhost:8080/) 来定义它将处理请求的地址。 接下来,使用 Start 方法启动监听器。 使用无限 While 循环继续监听新的 HTTP 请求。 GetContext 在循环期间等待请求,然后返回一个包含请求和响应对象的 HttpListenerContext 对象。

HttpListener C#(开发人员工作原理):图 2

记录请求 URL 后,创建一个简单的 HTML 响应对象,转换为字节数组,然后发送到响应输出流。 在将响应返回给客户端之前,正确指定了响应的内容类型和长度。 无限循环意味着服务器从不停止一个接一个地处理请求。 要停止监听器,需要调用 stop 方法,但在这种情况下,由于无限循环阻止它被到达。

HttpListener C#(开发人员工作原理):图 3

开始

IronPDF 帮助您在 .NET 中制作和修改高质量的 PDF,这对于需要创建文档和报告的情况非常有用。 HttpListener 的内置 HTTP 服务器功能允许您在小型应用程序或服务中管理 Web 请求。 这两个工具都提升了 .NET 应用程序在各自领域的实用性和速度。 要开始使用 C# 的 HttpListener 并将其与 IronPDF 集成以创建 PDF,请执行以下操作:

什么是 IronPDF?

功能丰富的 .NET 库IronPDF for C#允许 C# 程序生成、读取和编辑 PDF 文档。 借助此工具,开发人员可以快速将 HTML、CSS 和 JavaScript 内容转换为高质量且可打印的 PDF。 最重要的任务包括添加页眉和页脚、分割和合并 PDF、将水印添加到文档和将 HTML 转换为 PDF。 IronPDF 因为支持 .NET Framework 和 .NET Core 对于各种应用程序很有帮助。

由于 PDF 使用方便且信息丰富,开发人员可以轻松将其纳入他们的产品中。 由于 IronPDF 能够处理复杂数据布局和格式,因此它生成的 PDF 输出与客户端或原始 HTML 文本非常一致。

IronPDF在HTML到PDF转换方面表现出色,确保精确保留原始布局和样式。 它非常适合从基于Web的内容中创建PDF,如报告、发票和文档。 利用对HTML文件、URL和原始HTML字符串的支持,IronPDF轻松生成高质量的PDF文档。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

HttpListener C#(开发人员工作原理):图 4

IronPDF的功能

从 HTML 生成 PDF

将JavaScript、HTML和CSS转换为PDF。 IronPDF 支持媒体查询和响应式设计这两个现代 Web 标准。 它对现代 web 标准的支持对于动态装饰 PDF 报告、发票和使用 HTML 和 CSS 的文档非常有用。

PDF编辑

现有的 PDF 可以添加文本、图片和其他内容。 使用 IronPDF,开发人员可以从 PDF 文件中提取文本和图像,将多个 PDF 合并为一个文件,将 PDF 文件分成多个独立文档,并在 PDF 页面上添加水印、批注、页眉和页脚。

PDF 转换

将 Word、Excel 和图片文件等多种格式转换为 PDF。 IronPDF 还支持 PDF 到图像转换(PNG、JPEG 等)。

性能和可靠性

在工业环境中,高性能和可靠性是理想的设计特性。 开发人员可以轻松管理大量文档集。

安装IronPDF

要获得在 .NET 项目中处理 PDF 的工具,请安装 IronPDF 包:

Install-Package IronPdf

HttpListener C# 与 IronPDF 集成

这是一个全面的示例,向您展示如何使用 IronPDF 创建和提供 PDF 文档并设置 HttpListener:

using System;
using System.Net;
using System.Text;
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        // Step 1: Create an HttpListener instance
        HttpListener listener = new HttpListener();

        // Step 2: Configure URI prefixes
        listener.Prefixes.Add("http://localhost:8080/");

        // Step 3: Start the listener
        listener.Start();
        Console.WriteLine("Listening for requests on");

        // Step 4: Handle incoming requests
        while (true)
        {
            // Wait for an incoming request
            HttpListenerContext context = listener.GetContext();
            HttpListenerRequest request = context.Request;

            // Process the request (e.g., log the request URL)
            Console.WriteLine($"Received request for {request.Url}");

            // Generate PDF using IronPDF
            var htmlContent = "<h1>PDF generated by IronPDF</h1><p>This is a sample PDF document.</p>";
            var pdf = IronPdf.HtmlToPdf.StaticRenderHtmlAsPdf(htmlContent);

            // Get the PDF as a byte array
            byte[] pdfBytes = pdf.BinaryData;

            // Create a response
            HttpListenerResponse response = context.Response;

            // Set the content length and type
            response.ContentLength64 = pdfBytes.Length;
            response.ContentType = "application/pdf";

            // Write the PDF to the response output stream
            using (System.IO.Stream output = response.OutputStream)
            {
                output.Write(pdfBytes, 0, pdfBytes.Length);
            }

            // Close the response
            response.Close();
        }
        // Step 5: Stop the listener (this code is unreachable in the current loop structure)
        // listener.Stop();
    }
}
using System;
using System.Net;
using System.Text;
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        // Step 1: Create an HttpListener instance
        HttpListener listener = new HttpListener();

        // Step 2: Configure URI prefixes
        listener.Prefixes.Add("http://localhost:8080/");

        // Step 3: Start the listener
        listener.Start();
        Console.WriteLine("Listening for requests on");

        // Step 4: Handle incoming requests
        while (true)
        {
            // Wait for an incoming request
            HttpListenerContext context = listener.GetContext();
            HttpListenerRequest request = context.Request;

            // Process the request (e.g., log the request URL)
            Console.WriteLine($"Received request for {request.Url}");

            // Generate PDF using IronPDF
            var htmlContent = "<h1>PDF generated by IronPDF</h1><p>This is a sample PDF document.</p>";
            var pdf = IronPdf.HtmlToPdf.StaticRenderHtmlAsPdf(htmlContent);

            // Get the PDF as a byte array
            byte[] pdfBytes = pdf.BinaryData;

            // Create a response
            HttpListenerResponse response = context.Response;

            // Set the content length and type
            response.ContentLength64 = pdfBytes.Length;
            response.ContentType = "application/pdf";

            // Write the PDF to the response output stream
            using (System.IO.Stream output = response.OutputStream)
            {
                output.Write(pdfBytes, 0, pdfBytes.Length);
            }

            // Close the response
            response.Close();
        }
        // Step 5: Stop the listener (this code is unreachable in the current loop structure)
        // listener.Stop();
    }
}
Imports System
Imports System.Net
Imports System.Text
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Step 1: Create an HttpListener instance
		Dim listener As New HttpListener()

		' Step 2: Configure URI prefixes
		listener.Prefixes.Add("http://localhost:8080/")

		' Step 3: Start the listener
		listener.Start()
		Console.WriteLine("Listening for requests on")

		' Step 4: Handle incoming requests
		Do
			' Wait for an incoming request
			Dim context As HttpListenerContext = listener.GetContext()
			Dim request As HttpListenerRequest = context.Request

			' Process the request (e.g., log the request URL)
			Console.WriteLine($"Received request for {request.Url}")

			' Generate PDF using IronPDF
			Dim htmlContent = "<h1>PDF generated by IronPDF</h1><p>This is a sample PDF document.</p>"
			Dim pdf = IronPdf.HtmlToPdf.StaticRenderHtmlAsPdf(htmlContent)

			' Get the PDF as a byte array
			Dim pdfBytes() As Byte = pdf.BinaryData

			' Create a response
			Dim response As HttpListenerResponse = context.Response

			' Set the content length and type
			response.ContentLength64 = pdfBytes.Length
			response.ContentType = "application/pdf"

			' Write the PDF to the response output stream
			Using output As System.IO.Stream = response.OutputStream
				output.Write(pdfBytes, 0, pdfBytes.Length)
			End Using

			' Close the response
			response.Close()
		Loop
		' Step 5: Stop the listener (this code is unreachable in the current loop structure)
		' listener.Stop();
	End Sub
End Class
$vbLabelText   $csharpLabel

附带的 C# 代码展示了如何将IronPDF 的 HTML 转换为 PDF 与 HttpListener 连接,以动态生成和提供 PDF 文档,以及将其设置为功能简单的 HTTP 方法服务器。 第一步是创建 HttpListener 的实例,并将其设置为监听 http://localhost:8080/ 的 HTTP 请求。

启动监听器后,进入一个无限循环,处理传入请求。 代码记录每个请求的请求 URL,使用 IronPDF 从 HTML 文本创建 PDF 文档,然后将 PDF 转换为字节数组。 接下来,设置响应的正确 MIME 类型(application/pdf)和内容长度。

HttpListener C#(开发人员工作原理):图 5

在将 PDF 字节数组写入响应输出流后,关闭第一个响应流以将其发送回客户端。 通过此配置,服务器可以有效地返回动态生成的 PDF 文档以响应 HTTP 请求。

HttpListener C#(开发人员工作原理):图 6

结论

总而言之,将 IronPDF 与 C# 的 HttpListener 结合使用,可以提供一种可靠的方式,通过 HTTP 动态地创建和交付 PDF 文件。 借助 HttpListener,C# 应用程序可以创建轻量级 HTTP 服务器,这些服务器可以处理传入的请求并提供灵活的响应生成。 通过使用 IronPDF 的动态 HTML 转换为 PDF 功能,开发人员可以有效地直接从服务器端逻辑生成自定义或数据驱动的 PDF 报告、发票或其他文档。

可能特别适合需要通过 web 接口或 API 实时生成和交付文档的应用程序。 开发人员可以使用 HttpListener 和 IronPDF 实现可扩展和响应式解决方案,以满足特定的业务需求。 这些工具通过促进无缝的文档生成和 web 交付,增强了用户体验。

您可以通过使用 OCR、处理条形码、创建 PDF、连接到 Excel 等,来改进 .NET 开发工具箱。 这通过结合其基本基础与高度可定制的 Iron Software 套件和技术实现。

通过清晰列出针对项目量身定制的许可证选项,开发人员可以简化选择最佳模型的过程。 这些优势让开发人员能够以有效、及时和有条理的方式应用于各种问题的解决方案。

常见问题解答

如何在C#中设置HttpListener?

要在C#中设置HttpListener,您需要创建HttpListener类的实例,为其配置URI前缀以进行监听,启动监听器,处理传入的HTTP请求,并处理和响应这些请求。

HttpListener可以处理安全的HTTPS连接吗?

是的,HttpListener可以配置为处理HTTPS请求,通过利用SSL/TLS协议在服务器和客户端之间实现安全的数据传输。

在.NET应用程序中使用HttpListener有什么好处?

在.NET应用程序中使用HttpListener提供了多种好处,包括易于使用、对异步操作的支持、跨平台兼容性以及能够处理多个端点和身份验证方法。

如何使用.NET库将HTML内容转换为PDF?

您可以使用像IronPDF这样的.NET库,通过使用RenderHtmlAsPdf方法将HTML字符串直接转换为PDF格式,或者RenderUrlAsPdf将网页转换为PDF。

在HttpListener中URI前缀的作用是什么?

HttpListener中的URI前缀定义了监听器将处理的特定HTTP请求。通过配置这些前缀,您可以确保监听器仅处理针对特定端点的请求。

如何在C#中将HttpListener与PDF生成库集成?

可以通过使用HttpListener处理传入的HTTP请求,然后利用IronPDF从HTML内容生成PDF文档,该文档可以作为响应发送回去,来将HttpListener与像IronPDF这样的PDF生成库集成。

HttpListener兼容哪些平台?

HttpListener兼容Windows、Linux和macOS,使其适用于.NET Core和.NET 5+的跨平台开发。

异步操作支持如何提高HttpListener的性能?

HttpListener中的异步操作支持使其能够同时处理多个请求而不阻塞主应用程序线程,提高了服务器的可扩展性和响应性。

是否可以使用.NET库实时生成PDF?

是的,使用像IronPDF这样的.NET库,您可以基于用户输入或从HTTP请求接收的动态数据实时生成PDF,非常适合需要按需生成文档的应用程序。

安装.NET库进行PDF操作需要哪些步骤?

要在项目中安装像IronPDF这样的.NET库以进行PDF操作,您可以使用NuGet包管理器命令dotnet add package IronPDF来包含PDF操作所需的工具。

Jacob Mellor,Team Iron 的首席技术官
首席技术官

Jacob Mellor 是 Iron Software 的首席技术官,也是一位开创 C# PDF 技术的有远见的工程师。作为 Iron Software 核心代码库的原始开发者,他从公司成立之初就开始塑造公司的产品架构,与首席执行官 Cameron Rimington 一起将公司转变为一家拥有 50 多名员工的公司,为 NASA、特斯拉和全球政府机构提供服务。

Jacob 拥有曼彻斯特大学土木工程一级荣誉工程学士学位(BEng)(1998-2001 年)。他的旗舰产品 IronPDF 和 Iron Suite for .NET 库在全球的 NuGet 安装量已超过 3000 万次,其基础代码继续为全球使用的开发人员工具提供动力。Jacob 拥有 25 年的商业经验和 41 年的编码专业知识,他一直专注于推动企业级 C#、Java 和 Python PDF 技术的创新,同时指导下一代技术领导者。

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我