跳過到頁腳內容
.NET幫助

Nswag C#(對於開發者的運行原理)

API 在現今的軟體開發環境中是不可或缺的,因為它們有助於各種軟體系統和元件之間的溝通。 為了讓開發人員有效率地使用 API,必須有詳盡且易懂的說明文件。 NSwag C# 和 IronPDF 是兩種可以幫助 C# API 文件工作流程的有效工具。 本文章將討論如何使用 NSwag 以 .NET Core 產生 API 規格,並使用 IronPDF 從這些規格產生高品質的 PDF 文件。

How to Use NSwag in C#

1.使用 Swagger UI 建立 RESTful Web API。 2.建立 C# 主控台應用程式。 3.安裝 NSwag 函式庫。 4.匯入命名空間並建立物件。 5.將 Swagger JSON 處理為 C# 程式碼。 6.執行程式碼並顯示結果。

瞭解 NSwag

為了讓使用 ASP.NET Web API、ASP.NET Core 或其他 .NET Framework 建構的 API 更容易建立 Swagger 規格或 OpenAPI 文件,我們建立了一個名為 NSwag 的 .NET Swagger 工具鏈。

NSwag 的特點

製作 Swagger 規格

控制器、模型和 .NET 集合都可由 NSwag 用來自動產生 Swagger 規格。 NSwag 可透過檢視 API 程式碼的結構,產生涵蓋 API 端點、請求/回應形式、驗證技術等的綜合文件。

連接至 .NET 專案

透過將 NSwag 與 .NET 專案整合,開發人員可以輕鬆地將 Swagger 的產生納入他們的開發流程。 開發人員可透過在 .NET Core 專案中加入 NSwag 來確保文件會隨著程式碼庫更新,而 NSwag 會在每次建立專案時自動產生 Swagger 規格。

個人化與擴充

透過 NSwag 提供的廣泛客製化可能性,開發人員可以輕鬆調整所產生的 Swagger 規格,以符合他們獨特的需求。 開發人員可透過組態設定和注解控制所產生文件的許多元件,包括回應碼、參數解釋和路由命名慣例。

開始使用 NSwag

在 C# Console App 中設定 NSwag

NSwag 基礎類庫包括核心、註解和代碼生成命名空間,應可從 NuGet 安裝獲得。 將 NSwag 整合至 C# 應用程式,以產生程式碼和 Swagger 規格,以及 NSwag 可如何提高開發流程的效率。

NSwag C# (How It Works For Developers):圖 1 - 在 Visual Studio 套件管理員中瀏覽 NSwag 並安裝它

在 Windows Console 和 Forms 中實作 NSwag

透過自動客戶端製作,開發人員可以有效率地製作程式碼,藉由將 NSwag 整合至 Windows 桌面應用程式,直接從其桌面應用程式中存取 API。 在開發與線上服務或 RESTful API 進行溝通的桌面應用程式時,會相當有幫助。

NSwag 可用於 Web 應用程式,以產生內部 API 的 API 文件和用於消耗外部 API 的用戶端程式碼。這有助於開發人員保持應用程式前端與後端元件的一致性。

NSwag C# 示例

以下是一個程式碼範例,展示如何使用 NSwag 製作 C# 用戶端程式碼:

using NSwag.CodeGeneration.CSharp;
using NSwag;
using System.Reflection;
using System.CodeDom.Compiler;
using Microsoft.CodeAnalysis;
using System.Net.Http;
using System.IO;
using System.Collections.Generic;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (var wclient = new System.Net.WebClient())
        {
            // Create JSON file data from the Swagger .NET Core web API
            var document = await OpenApiDocument.FromJsonAsync(wclient.DownloadString("http://localhost:5013/swagger/v1/swagger.json"));
            var settings = new CSharpClientGeneratorSettings
            {
                ClassName = "Weather",
                CSharpGeneratorSettings = { Namespace = "Demo" }
            };

            var generator = new CSharpClientGenerator(document, settings);
            var code = generator.GenerateFile();
            var assembly = CompileCode(code);
            var clientType = assembly.GetType("Demo.WeatherClient"); // Replace with your actual client class name
            using (var httpClient = new HttpClient())
            {
                var client = (IApiClient)Activator.CreateInstance(clientType, httpClient);
                var result = await client.GetWeatherForecastAsync();
                foreach (var item in result)
                {
                    Console.WriteLine($"Date: {item.Date} F: {item.TemperatureF} C: {item.TemperatureC} Summary: {item.Summary}");
                }
            }
        }
    }

    static Assembly CompileCode(string code)
    {
        using (var memoryStream = new MemoryStream())
        {
            var assemblyPath = Path.GetDirectoryName(typeof(object).Assembly.Location);
            var references = new List<MetadataReference>
            {
                MetadataReference.CreateFromFile(typeof(object).GetTypeInfo().Assembly.Location),
                MetadataReference.CreateFromFile(Path.Combine(assemblyPath, "Microsoft.AspNetCore.Mvc.dll")),
                MetadataReference.CreateFromFile(Path.Combine(assemblyPath, "System.Private.CoreLib.dll"))
            };

            var compilation = Microsoft.CodeAnalysis.CSharp.CSharpCompilation.Create("ApiClient")
                .WithOptions(new Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary))
                .AddReferences(references)
                .AddSyntaxTrees(Microsoft.CodeAnalysis.CSharp.SyntaxFactory.ParseSyntaxTree(code));

            var emitResult = compilation.Emit(memoryStream);
            if (!emitResult.Success)
            {
                Console.WriteLine("Compilation errors:");
                foreach (var diagnostic in emitResult.Diagnostics)
                {
                    Console.WriteLine(diagnostic);
                }
                return null;
            }
            memoryStream.Seek(0, SeekOrigin.Begin);
            return Assembly.Load(memoryStream.ToArray());
        }
    }

    public interface IApiClient
    {
        // Replace with your actual method name and return type
        Task<List<WeatherForecast>> GetWeatherForecastAsync();
    }

    public class WeatherForecast
    {
        public DateTime Date { get; set; }
        public int TemperatureC { get; set; }
        public int TemperatureF { get; set; }
        public string Summary { get; set; }
    }
}
using NSwag.CodeGeneration.CSharp;
using NSwag;
using System.Reflection;
using System.CodeDom.Compiler;
using Microsoft.CodeAnalysis;
using System.Net.Http;
using System.IO;
using System.Collections.Generic;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (var wclient = new System.Net.WebClient())
        {
            // Create JSON file data from the Swagger .NET Core web API
            var document = await OpenApiDocument.FromJsonAsync(wclient.DownloadString("http://localhost:5013/swagger/v1/swagger.json"));
            var settings = new CSharpClientGeneratorSettings
            {
                ClassName = "Weather",
                CSharpGeneratorSettings = { Namespace = "Demo" }
            };

            var generator = new CSharpClientGenerator(document, settings);
            var code = generator.GenerateFile();
            var assembly = CompileCode(code);
            var clientType = assembly.GetType("Demo.WeatherClient"); // Replace with your actual client class name
            using (var httpClient = new HttpClient())
            {
                var client = (IApiClient)Activator.CreateInstance(clientType, httpClient);
                var result = await client.GetWeatherForecastAsync();
                foreach (var item in result)
                {
                    Console.WriteLine($"Date: {item.Date} F: {item.TemperatureF} C: {item.TemperatureC} Summary: {item.Summary}");
                }
            }
        }
    }

    static Assembly CompileCode(string code)
    {
        using (var memoryStream = new MemoryStream())
        {
            var assemblyPath = Path.GetDirectoryName(typeof(object).Assembly.Location);
            var references = new List<MetadataReference>
            {
                MetadataReference.CreateFromFile(typeof(object).GetTypeInfo().Assembly.Location),
                MetadataReference.CreateFromFile(Path.Combine(assemblyPath, "Microsoft.AspNetCore.Mvc.dll")),
                MetadataReference.CreateFromFile(Path.Combine(assemblyPath, "System.Private.CoreLib.dll"))
            };

            var compilation = Microsoft.CodeAnalysis.CSharp.CSharpCompilation.Create("ApiClient")
                .WithOptions(new Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary))
                .AddReferences(references)
                .AddSyntaxTrees(Microsoft.CodeAnalysis.CSharp.SyntaxFactory.ParseSyntaxTree(code));

            var emitResult = compilation.Emit(memoryStream);
            if (!emitResult.Success)
            {
                Console.WriteLine("Compilation errors:");
                foreach (var diagnostic in emitResult.Diagnostics)
                {
                    Console.WriteLine(diagnostic);
                }
                return null;
            }
            memoryStream.Seek(0, SeekOrigin.Begin);
            return Assembly.Load(memoryStream.ToArray());
        }
    }

    public interface IApiClient
    {
        // Replace with your actual method name and return type
        Task<List<WeatherForecast>> GetWeatherForecastAsync();
    }

    public class WeatherForecast
    {
        public DateTime Date { get; set; }
        public int TemperatureC { get; set; }
        public int TemperatureF { get; set; }
        public string Summary { get; set; }
    }
}
Imports NSwag.CodeGeneration.CSharp
Imports NSwag
Imports System.Reflection
Imports System.CodeDom.Compiler
Imports Microsoft.CodeAnalysis
Imports System.Net.Http
Imports System.IO
Imports System.Collections.Generic
Imports System.Threading.Tasks

Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		Using wclient = New System.Net.WebClient()
			' Create JSON file data from the Swagger .NET Core web API
			Dim document = Await OpenApiDocument.FromJsonAsync(wclient.DownloadString("http://localhost:5013/swagger/v1/swagger.json"))
			Dim settings = New CSharpClientGeneratorSettings With {
				.ClassName = "Weather",
				.CSharpGeneratorSettings = { [Namespace] = "Demo" }
			}

			Dim generator = New CSharpClientGenerator(document, settings)
			Dim code = generator.GenerateFile()
			Dim assembly = CompileCode(code)
			Dim clientType = assembly.GetType("Demo.WeatherClient") ' Replace with your actual client class name
			Using httpClient As New HttpClient()
				Dim client = DirectCast(Activator.CreateInstance(clientType, httpClient), IApiClient)
				Dim result = Await client.GetWeatherForecastAsync()
				For Each item In result
					Console.WriteLine($"Date: {item.Date} F: {item.TemperatureF} C: {item.TemperatureC} Summary: {item.Summary}")
				Next item
			End Using
		End Using
	End Function

	Private Shared Function CompileCode(ByVal code As String) As System.Reflection.Assembly
		Using memoryStream As New MemoryStream()
			Dim assemblyPath = Path.GetDirectoryName(GetType(Object).Assembly.Location)
			Dim references = New List(Of MetadataReference) From {MetadataReference.CreateFromFile(GetType(Object).GetTypeInfo().Assembly.Location), MetadataReference.CreateFromFile(Path.Combine(assemblyPath, "Microsoft.AspNetCore.Mvc.dll")), MetadataReference.CreateFromFile(Path.Combine(assemblyPath, "System.Private.CoreLib.dll"))}

			Dim compilation = Microsoft.CodeAnalysis.CSharp.CSharpCompilation.Create("ApiClient").WithOptions(New Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary)).AddReferences(references).AddSyntaxTrees(Microsoft.CodeAnalysis.CSharp.SyntaxFactory.ParseSyntaxTree(code))

			Dim emitResult = compilation.Emit(memoryStream)
			If Not emitResult.Success Then
				Console.WriteLine("Compilation errors:")
				For Each diagnostic In emitResult.Diagnostics
					Console.WriteLine(diagnostic)
				Next diagnostic
				Return Nothing
			End If
			memoryStream.Seek(0, SeekOrigin.Begin)
			Return System.Reflection.Assembly.Load(memoryStream.ToArray())
		End Using
	End Function

	Public Interface IApiClient
		' Replace with your actual method name and return type
		Function GetWeatherForecastAsync() As Task(Of List(Of WeatherForecast))
	End Interface

	Public Class WeatherForecast
		Public Property [Date]() As DateTime
		Public Property TemperatureC() As Integer
		Public Property TemperatureF() As Integer
		Public Property Summary() As String
	End Class
End Class
$vbLabelText   $csharpLabel

對於我們希望使用的 API,我們指定 Swagger 規範的 URL(swaggerUrl)。 然後,再定義產生並執行為 DLL 集合的用戶端程式碼。 使用 OpenApiDocument 從給定的 URL 非同步載入 Swagger 文檔,使用 FromJsonAsync。 若要變更產生的客戶端程式碼,我們調整程式碼產生器的設定(CSharpClientGeneratorSettings)。 在本範例中,指定了所產生的用戶端程式碼的類別名稱和命名空間。

從載入的 Swagger 文件中,我們建構一個 CSharpClientGenerator 實例,並使用它來產生客戶端程式碼。 建立的用戶端程式碼會儲存到指定的輸出路徑。 我們會回應程序中可能出現的任何異常或錯誤,在主控台上顯示相關通知。

NSwag C# (How It Works For Developers):圖 2 - 上述程式碼的控制台輸出

NSwag 操作

產生用戶端程式碼

NSwag 可以使用 Swagger 規格來產生許多語言的用戶端程式碼,包括 Java、TypeScript 和 C#。 這可讓開發人員在應用程式中簡單地使用 API。

產生伺服器程式碼

以 Swagger 規格為基礎,NSwag 也可以製作伺服器程式碼,例如 ASP.NET Core 控制器。 這有助於快速架設 API 實作的伺服器端程式碼。

製作互動式 API 文件

鑑於 Swagger 規格,NSwag 可能會製作互動式 API 文件,例如 Swagger UI。 本文件提供了一個易於使用的介面,用於探索和測試 API 端點。

製作代理類別

為了整合以 SOAP 為基礎的 API,NSwag 可以製作代理類別。 這可讓程式設計師使用製作的用戶端程式碼,從其應用程式中存取 SOAP 服務。

驗證 Swagger 規格

NSwag 有能力驗證 Swagger 規格,以確保它們遵循 OpenAPI/Swagger 標準。 這可讓您更容易看出 API 文件中的任何錯誤或差異。

將 NSwag 與 IronPDF 整合

開發人員可透過整合 NSwag 與 IronPDF,利用兩種技術的優點改善 API 文件的工作流程。 開發人員可使用 NSwag 來產生 Swagger 規格,並使用 IronPDF 適用於 .NET 將其轉換為 PDFs 來製作詳盡、可離線使用的 .NET Web API 文件,且這些文件可隨時使用和分享。 以下程序是整合流程的一部分:

IronPDF 擅長於 HTML 至 PDF 的轉換,可確保精確保留原始版面與樣式。 它非常適合從網頁內容(如報告、發票和文件)建立 PDF。 IronPDF 支援 HTML 檔案、URL 和原始 HTML 字串,可輕鬆製作高品質的 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

安裝 IronPDF

  • 啟動 Visual Studio 專案。
  • 選擇"工具">"NuGet Package Manager">"Package Manager Console"。
  • 開啟您的指令提示,並在套件管理員控制台中輸入下列指令:
Install-Package IronPdf
  • 另外,您也可以使用 NuGet Package Manager for Solutions 安裝 IronPDF。
  • 探索並從搜尋結果中選擇 IronPDF 套件,然後按一下"安裝"選項。 Visual Studio 將代您處理下載與安裝。

NSwag C# (How It Works For Developers):圖 3 - 使用管理 NuGet Package for Solution 安裝 IronPDF,方法是在 NuGet Package Manager 的搜尋列中搜尋 IronPDF,然後選擇專案並點選安裝按鈕。

  • NuGet 將安裝 IronPDF 套件以及專案所需的任何相依性。
  • 安裝完成後,IronPDF 即可用於您的專案。

透過 NuGet 網站安裝

有關 IronPDF 功能、相容性和可用下載的其他資訊,請造訪 NuGet 上的 IronPDF 頁面

利用 DLL 安裝

另外,您也可以使用 IronPDF 的 DLL 檔案,直接將 IronPDF 納入您的專案中。若要下載包含 DLL 的 ZIP 檔案,請點選 IronPDF 下載連結。 解壓縮檔案並將 DLL 加入您的專案。

實作邏輯

透過使用 NSwag,開發人員可以結合 IronPDF 使用 CodeGeneration.CSharp,更快建立 API 文件和客戶端程式碼以使用 API。 以下步驟是整合工作流程的一部分:

1.產生客戶端程式碼:若要從 Swagger 規範建立 C# 客戶端程式碼,請使用 NSwag.CodeGeneration.CSharp。 與 API 端點通訊的用戶端類別和方法的建立在此步驟中自動完成。 2.利用 NSwag 取得資料:若要從 Swagger 規格產生 JSON 文檔,請使用 CodeGeneration.CSharp。 在此階段中,請求/回應格式、驗證技術和 API 用戶端點都會建立為人類可讀的文件。 3.將 JSON 轉換為 PDF:若要將產生的程式碼結果轉換為 PDF 文件,請使用 IronPDF。 在此階段,HTML 文字會被轉換成一份精緻的 PDF 文件,以便隨時分享和散佈。 4.改善 PDF 文件:使用 IronPDF 在 PDF 文件中添加更多內容,例如頁首、頁尾、浮水印或獨特的品牌形象。 此階段可讓開發人員根據自己的喜好,個人化 PDF 文件的外觀和品牌。

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

StringBuilder sb = new StringBuilder();

foreach (var item in result)
{
    sb.Append($"<p>Date: {item.Date} F: {item.TemperatureF} C: {item.TemperatureC} Summary: {item.Summary}</p>");
}

var renderer = new HtmlToPdf();
var pdf = renderer.RenderHtmlAsPdf(sb.ToString());
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF generated successfully!");
Console.ReadKey();
using IronPdf;
using System.Text;
using System.Collections.Generic;

StringBuilder sb = new StringBuilder();

foreach (var item in result)
{
    sb.Append($"<p>Date: {item.Date} F: {item.TemperatureF} C: {item.TemperatureC} Summary: {item.Summary}</p>");
}

var renderer = new HtmlToPdf();
var pdf = renderer.RenderHtmlAsPdf(sb.ToString());
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF generated successfully!");
Console.ReadKey();
Imports IronPdf
Imports System.Text
Imports System.Collections.Generic

Private sb As New StringBuilder()

For Each item In result
	sb.Append($"<p>Date: {item.Date} F: {item.TemperatureF} C: {item.TemperatureC} Summary: {item.Summary}</p>")
Next item

Dim renderer = New HtmlToPdf()
Dim pdf = renderer.RenderHtmlAsPdf(sb.ToString())
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF generated successfully!")
Console.ReadKey()
$vbLabelText   $csharpLabel

上述程式碼從結果物件中取得數據,並在循環中將欄位 DateTemperatureFTemperatureCSummary 加入段落。然後,它指定 PDF 的輸出檔案路徑,並通知使用者 PDF 已成功產生。

以下是上述程式碼的結果。

NSwag C# (How It Works For Developers):圖 4 - 上述程式碼的輸出範例

結論

CodeGeneration NSwag 技術(如 CSharp 和 IronPDF)可以很好地協同工作,以簡化客戶端程式碼產生和 API 文件流程。 開發人員可藉由將這些工具整合至 C# 應用程式,加速建立 API 驅動的解決方案、自動化建立 API 文件,以及製作專業樣貌的 PDF 出版物。 IronPDF 為開發人員提供了一個完整的解決方案,無論他們開發的是桌面應用程式、Web 應用程式還是基於雲端的應用程序,都可以有效地記錄 API 並產生 C# 用戶端程式碼。

Lite 套件包括永久授權、一年的軟體維護,以及升級至函式庫。 IronPDF 提供免費授權,但對再散佈和時間有限制。使用者可在試用期間評估解決方案,而無需看到水印。 有關價格和授權的其他資訊,請參閱 IronPDF的授權資訊。 請前往 Iron Software 圖書館頁面,取得 Iron Software 產品圖書館的其他資訊。

常見問題解答

NSwag 如何幫助生成 C# 的 API 規範?

NSwag 能夠自動從 .NET Core 項目中生成 API 規範,稱為 Swagger 或 OpenAPI 文檔。這確保了 API 文檔始終與代碼庫保持同步。

將 Swagger 規範轉換為 PDF 文檔的過程是什麼?

要將 Swagger 規範轉換為 PDF 文檔,可以使用 IronPDF。首先,使用 NSwag 生成 Swagger 規範,然後利用 IronPDF 將這些規範的 HTML 內容轉換為高質量的 PDF。

如何將 NSwag 集成到 .NET 項目中?

將 NSwag 集成到 .NET 項目中,包括通過 NuGet 安裝 NSwag 庫,配置它以便在構建過程中生成 Swagger 規範,並使用生成的規範進行文檔和代碼生成。

NSwag 可以從一個 Swagger 規範生成客戶端和服務器端代碼嗎?

是的,NSwag 能夠從單個 Swagger 規範中生成 C#、Java 和 TypeScript 等語言的客戶端代碼,以及服務器端代碼如 ASP.NET Core 控制器。

IronPDF 如何增強 API 文檔工作流程?

IronPDF 通過允許開發人員將基於 HTML 的 API 文檔轉換為專業的、可共享的 PDF 文檔,增強了 API 文檔工作流程,從而使信息可以離線訪問。

在 Visual Studio 項目中使用 IronPDF 需要哪些步驟?

要在 Visual Studio 項目中使用 IronPDF,可以通過搜索 IronPDF 並單擊“安裝”以使用 NuGet 包管理器安裝它,或使用包管理器控制台的命令Install-Package IronPDF

如何使用 NSwag 生成交互式 API 文檔?

NSwag 可以通過生成 Swagger UI 來生成交互式 API 文檔,這為在瀏覽器中直接探索和測試 API 端點提供了一個用戶友好的界面。

使用 NSwag 進行 API 文檔的好處有哪些?

NSwag 自動化 API 文檔生成,確保其始終與代碼庫保持最新。它還支持創建交互式文檔和客戶端代碼,簡化開發過程。

IronPDF 如何處理 HTML 內容以創建 PDF?

IronPDF 使用其渲染引擎將 HTML 內容(包括 CSS 和 JavaScript)轉換為 PDF 格式,是從基於網頁的內容創建精確且可離線準備的文檔的理想選擇。

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

Jacob Mellor是Iron Software的首席技術官,也是開創C# PDF技術的前瞻性工程師。作為Iron Software核心代碼庫的原始開發者,他自公司成立以來就塑造了公司的產品架構,並與CEO Cameron Rimington將公司轉型為服務NASA、Tesla以及全球政府機構的50多人公司。

Jacob擁有曼徹斯特大學土木工程一級榮譽學士學位(1998年–2001年)。他於1999年在倫敦開立首家軟體公司,並於2005年建立了他的第一個.NET組件,專注於解決Microsoft生態系統中的複雜問題。

他的旗艦作品IronPDF和Iron Suite .NET程式庫全球已獲得超過3000萬次NuGet安裝,他的基礎代碼不斷在全球各地驅動開發者工具。擁有25年以上的商業經驗和41年的編碼專業知識,Jacob仍然專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

鋼鐵支援團隊

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