狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

【C#】推薦QuestPDF:現代開源.NET PDF文檔生成庫

admin
2024年6月8日 23:57 本文熱度 1395

在當今的開發環境中,選擇一個可靠且功能強大的庫是至關重要的。今天,我想向大家推薦一個現代開源的.NET庫——QuestPDF,它專注于PDF文檔的生成。

什么是QuestPDF?

QuestPDF是一個現代的開源.NET庫,專門用于PDF文檔的生成。它提供了一個全面的布局引擎,并通過簡潔且易于發現的C# Fluent API進行操作。以下是QuestPDF的一些主要特點:

  • 代碼設計PDF文檔:使用C#進行PDF文檔設計,完全采用代碼的方式。充分利用版本控制系統的優勢。

  • 強大的結構元素:可以使用文本、圖像、邊框、表格等多種結構元素來組成PDF文檔。

  • 全面的布局引擎:專為PDF文檔生成和分頁支持而設計的布局引擎。

  • 簡潔易懂的API:使用簡潔且易于理解的C# Fluent API編寫代碼,并利用IntelliSense快速發現可用選項。

  • 熱重載功能:節省時間的熱重載功能,允許在不重新編譯代碼的情況下實時預覽PDF文檔。

GitHub

https://github.com/QuestPDF/QuestPDF

為什么選擇QuestPDF?

選擇一個項目依賴項可能是困難的。我們需要確保項目的穩定性和可維護性。調查顯示,GitHub星標數量在評估庫質量時起著重要作用。因此,請為這個倉庫點個星標,這只需要幾秒鐘,但能幫助成千上萬的開發者!

如何開始?

開始探索QuestPDF庫吧!只需250行C#代碼,您就可以創建一個功能齊全的PDF發票實現。閱讀入門教程,熟悉庫的總體架構、重要的布局結構以及有用的模式和實踐。輕松開始設計您的PDF文檔、報告、發票等。

git clone https://github.com/QuestPDF/QuestPDF.git

安裝QuestPDF

在開始使用QuestPDF之前,你需要在項目中安裝它。你可以通過NuGet包管理器來完成這一操作。打開NuGet包管理器控制臺并運行以下命令:

Install-Package QuestPDF

或者在Visual Studio中,你可以通過“管理NuGet包”選項來搜索并安裝QuestPDF。

快速入門

以下例子為直接引用項目,所做的測試

下面是一個簡單的示例,展示了如何使用QuestPDF生成一個基本的PDF文檔。

示例1

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using QuestPDF.Fluent;using QuestPDF.Helpers;using QuestPDF.Infrastructure;
namespace TestApp{    public class SimpleDocument : IDocument    {        // 定義文檔的元數據        public DocumentMetadata GetMetadata() => DocumentMetadata.Default;
       // 定義文檔的內容和結構        public void Compose(IDocumentContainer container)        {            // 配置頁面            container                .Page(page =>                {                    // 設置頁面的邊距                    page.Margin(50);                    // 設置頁面大小為A4                    page.Size(PageSizes.A4);                    // 設置頁面背景顏色為白色                    page.PageColor(Colors.White);                    // 定義頁眉                    page.Header()                        .Text("QuestPDF Example")  // 頁眉文本                        .FontSize(20)             // 字體大小                        .Bold()                   // 加粗                        .AlignCenter();           // 居中對齊                    // 定義頁面內容                    page.Content()                        .PaddingVertical(10)      // 設置內容的垂直內邊距                        .Column(column =>                        {                            // 設置列間距                            column.Spacing(20);                            // 添加文本項                            column.Item().Text("Hello, QuestPDF!");                            // 添加圖片項                            column.Item().Image("img.png");                        });
                   // 定義頁腳                    page.Footer()                        .AlignCenter()             // 居中對齊                        .Text(x =>                        {                            // 頁腳文本內容,包含當前頁碼和總頁數                            x.Span("Page ");                            x.CurrentPageNumber();  // 當前頁碼                            x.Span(" of ");                            x.TotalPages();         // 總頁數                        });                });        }    }}
internal class Program{    static void Main(string[] args)    {        QuestPDF.Settings.License = new QuestPDF.Infrastructure.LicenseType();//防止證書需要提示出錯        var document = new SimpleDocument();        // 生成PDF文件        document.GeneratePdf("example.pdf");    }}

運行后,生成pdf文件。

示例表格2

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using QuestPDF.Fluent;using QuestPDF.Helpers;using QuestPDF.Infrastructure;
namespace TestApp{    public class TableDocument : IDocument    {        public DocumentMetadata GetMetadata() => DocumentMetadata.Default;
       public void Compose(IDocumentContainer container)        {            container                .Page(page =>                {                    page.Margin(50);                    page.Size(PageSizes.A4);                    page.PageColor(Colors.White);                    page.Header()                        .Text("Table Example")                        .FontSize(20)                        .Bold()                        .AlignCenter();                    page.Content()                        .PaddingVertical(10)                        .Column(column =>                        {                            column.Spacing(20);                            // 表格標題                            column.Item().Text("Sample Table").FontSize(16).Bold().AlignCenter();                            // 創建表格                            column.Item().Table(table =>                            {                                // 設置表格列數                                table.ColumnsDefinition(columns =>                                {                                    columns.RelativeColumn(2); // 第一列相對寬度為2                                    columns.RelativeColumn(3); // 第二列相對寬度為3                                    columns.RelativeColumn(2); // 第三列相對寬度為2                                });                                // 表頭                                table.Header(header =>                                {                                    header.Cell().Element(CellStyle).Text("ID");                                    header.Cell().Element(CellStyle).Text("Name");                                    header.Cell().Element(CellStyle).Text("Age");                                    // 定義單元格樣式                                    static IContainer CellStyle(IContainer container)                                    {                                        return container                                            .Padding(5)                                            .Background(Colors.Grey.Lighten2)                                            .Border(1)                                            .BorderColor(Colors.Black);                                    }                                });                                // 表格內容                                for (int i = 1; i <= 10; i++)                                {                                    table.Cell().Element(CellStyle).Text(i.ToString());                                    table.Cell().Element(CellStyle).Text($"Name {i}");                                    table.Cell().Element(CellStyle).Text((20 + i).ToString());                                }                                // 定義單元格樣式                                static IContainer CellStyle(IContainer container)                                {                                    return container                                        .Padding(5)                                        .Border(1)                                        .BorderColor(Colors.Grey.Lighten1);                                }                            });                        });                    page.Footer()                        .AlignCenter()                        .Text(x =>                        {                            x.Span("Page ");                            x.CurrentPageNumber();                            x.Span(" of ");                            x.TotalPages();                        });                });        }    }}

示例圖表2

Nuget安裝

SkiaSharpSkiaSharp.Views
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using QuestPDF.Fluent;using QuestPDF.Helpers;using QuestPDF.Infrastructure;using SkiaSharp;using SkiaSharp.Extended.Svg;
namespace TestApp{    public class ChartDocument : IDocument    {        public DocumentMetadata GetMetadata() => DocumentMetadata.Default;
       public void Compose(IDocumentContainer container)        {            container                .Page(page =>                {                    page.Margin(50);                    page.Size(PageSizes.A4);                    page.PageColor(Colors.White);                    page.Header()                        .Text("Chart Example")                        .FontSize(20)                        .Bold()                        .AlignCenter();                    page.Content()                        .PaddingVertical(10)                        .Column(column =>                        {                            column.Spacing(20);                            // 圖表標題                            column.Item().Text("Sample Chart").FontSize(16).Bold().AlignCenter();                            // 創建圖表                            var svgContent = GenerateSvgChart();                            column.Item().Svg(svgContent);                        });                    page.Footer()                        .AlignCenter()                        .Text(x =>                        {                            x.Span("Page ");                            x.CurrentPageNumber();                            x.Span(" of ");                            x.TotalPages();                        });                });        }
       private string GenerateSvgChart()        {            var width = 600;            var height = 400;            // 創建SKPictureRecorder            using var recorder = new SKPictureRecorder();            var canvas = recorder.BeginRecording(new SKRect(0, 0, width, height));            // 示例數據            var data = new[] { 10, 20, 30, 40, 50 };            var maxData = 50;            // 創建畫筆            using var paint = new SKPaint            {                Color = SKColors.Blue,                IsAntialias = true,                Style = SKPaintStyle.Fill,                StrokeWidth = 2            };            // 計算條形圖的寬度和間距            var barWidth = width / (data.Length * 2);            var spacing = barWidth;            for (int i = 0; i < data.Length; i++)            {                // 計算條形圖的高度                var barHeight = (data[i] / (float)maxData) * height;                // 繪制條形圖                var rect = new SKRect(                    i * (barWidth + spacing),                    height - barHeight,                    i * (barWidth + spacing) + barWidth,                    height                );                canvas.DrawRect(rect, paint);            }            // 獲取繪制內容            var picture = recorder.EndRecording();            // 將SKPicture轉換為SVG            using var svgStream = new MemoryStream();            var svgCanvas = SKSvgCanvas.Create(new SKRect(0, 0, width, height), svgStream);            svgCanvas.DrawPicture(picture);            svgCanvas.Dispose();            return System.Text.Encoding.UTF8.GetString(svgStream.ToArray());        }    }}

結語

QuestPDF是一個強大且易于使用的工具,適合任何需要生成PDF文檔的.NET開發者。無論您是需要生成報告、發票還是其他類型的文檔,QuestPDF都能滿足您的需求。立即開始使用QuestPDF,體驗其強大的功能和簡潔的API設計吧!

更多信息請訪問QuestPDF官網。


該文章在 2024/6/8 23:57:24 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved