欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

【C#】推薦QuestPDF:現(xiàn)代開(kāi)源.NET PDF文檔生成庫(kù)

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

在當(dāng)今的開(kāi)發(fā)環(huán)境中,選擇一個(gè)可靠且功能強(qiáng)大的庫(kù)是至關(guān)重要的。今天,我想向大家推薦一個(gè)現(xiàn)代開(kāi)源的.NET庫(kù)——QuestPDF,它專(zhuān)注于PDF文檔的生成。

什么是QuestPDF?

QuestPDF是一個(gè)現(xiàn)代的開(kāi)源.NET庫(kù),專(zhuān)門(mén)用于PDF文檔的生成。它提供了一個(gè)全面的布局引擎,并通過(guò)簡(jiǎn)潔且易于發(fā)現(xiàn)的C# Fluent API進(jìn)行操作。以下是QuestPDF的一些主要特點(diǎn):

  • 代碼設(shè)計(jì)PDF文檔:使用C#進(jìn)行PDF文檔設(shè)計(jì),完全采用代碼的方式。充分利用版本控制系統(tǒng)的優(yōu)勢(shì)。

  • 強(qiáng)大的結(jié)構(gòu)元素:可以使用文本、圖像、邊框、表格等多種結(jié)構(gòu)元素來(lái)組成PDF文檔。

  • 全面的布局引擎:專(zhuān)為PDF文檔生成和分頁(yè)支持而設(shè)計(jì)的布局引擎。

  • 簡(jiǎn)潔易懂的API:使用簡(jiǎn)潔且易于理解的C# Fluent API編寫(xiě)代碼,并利用IntelliSense快速發(fā)現(xiàn)可用選項(xiàng)。

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

GitHub

https://github.com/QuestPDF/QuestPDF

為什么選擇QuestPDF?

選擇一個(gè)項(xiàng)目依賴(lài)項(xiàng)可能是困難的。我們需要確保項(xiàng)目的穩(wěn)定性和可維護(hù)性。調(diào)查顯示,GitHub星標(biāo)數(shù)量在評(píng)估庫(kù)質(zhì)量時(shí)起著重要作用。因此,請(qǐng)為這個(gè)倉(cāng)庫(kù)點(diǎn)個(gè)星標(biāo),這只需要幾秒鐘,但能幫助成千上萬(wàn)的開(kāi)發(fā)者!

如何開(kāi)始?

開(kāi)始探索QuestPDF庫(kù)吧!只需250行C#代碼,您就可以創(chuàng)建一個(gè)功能齊全的PDF發(fā)票實(shí)現(xiàn)。閱讀入門(mén)教程,熟悉庫(kù)的總體架構(gòu)、重要的布局結(jié)構(gòu)以及有用的模式和實(shí)踐。輕松開(kāi)始設(shè)計(jì)您的PDF文檔、報(bào)告、發(fā)票等。

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

安裝QuestPDF

在開(kāi)始使用QuestPDF之前,你需要在項(xiàng)目中安裝它。你可以通過(guò)NuGet包管理器來(lái)完成這一操作。打開(kāi)NuGet包管理器控制臺(tái)并運(yùn)行以下命令:

Install-Package QuestPDF

或者在Visual Studio中,你可以通過(guò)“管理NuGet包”選項(xiàng)來(lái)搜索并安裝QuestPDF。

快速入門(mén)

以下例子為直接引用項(xiàng)目,所做的測(cè)試

下面是一個(gè)簡(jiǎn)單的示例,展示了如何使用QuestPDF生成一個(gè)基本的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    {        // 定義文檔的元數(shù)據(jù)        public DocumentMetadata GetMetadata() => DocumentMetadata.Default;
       // 定義文檔的內(nèi)容和結(jié)構(gòu)        public void Compose(IDocumentContainer container)        {            // 配置頁(yè)面            container                .Page(page =>                {                    // 設(shè)置頁(yè)面的邊距                    page.Margin(50);                    // 設(shè)置頁(yè)面大小為A4                    page.Size(PageSizes.A4);                    // 設(shè)置頁(yè)面背景顏色為白色                    page.PageColor(Colors.White);                    // 定義頁(yè)眉                    page.Header()                        .Text("QuestPDF Example")  // 頁(yè)眉文本                        .FontSize(20)             // 字體大小                        .Bold()                   // 加粗                        .AlignCenter();           // 居中對(duì)齊                    // 定義頁(yè)面內(nèi)容                    page.Content()                        .PaddingVertical(10)      // 設(shè)置內(nèi)容的垂直內(nèi)邊距                        .Column(column =>                        {                            // 設(shè)置列間距                            column.Spacing(20);                            // 添加文本項(xiàng)                            column.Item().Text("Hello, QuestPDF!");                            // 添加圖片項(xiàng)                            column.Item().Image("img.png");                        });
                   // 定義頁(yè)腳                    page.Footer()                        .AlignCenter()             // 居中對(duì)齊                        .Text(x =>                        {                            // 頁(yè)腳文本內(nèi)容,包含當(dāng)前頁(yè)碼和總頁(yè)數(shù)                            x.Span("Page ");                            x.CurrentPageNumber();  // 當(dāng)前頁(yè)碼                            x.Span(" of ");                            x.TotalPages();         // 總頁(yè)數(shù)                        });                });        }    }}
internal class Program{    static void Main(string[] args)    {        QuestPDF.Settings.License = new QuestPDF.Infrastructure.LicenseType();//防止證書(shū)需要提示出錯(cuò)        var document = new SimpleDocument();        // 生成PDF文件        document.GeneratePdf("example.pdf");    }}

運(yùn)行后,生成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);                            // 表格標(biāo)題                            column.Item().Text("Sample Table").FontSize(16).Bold().AlignCenter();                            // 創(chuàng)建表格                            column.Item().Table(table =>                            {                                // 設(shè)置表格列數(shù)                                table.ColumnsDefinition(columns =>                                {                                    columns.RelativeColumn(2); // 第一列相對(duì)寬度為2                                    columns.RelativeColumn(3); // 第二列相對(duì)寬度為3                                    columns.RelativeColumn(2); // 第三列相對(duì)寬度為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);                                    }                                });                                // 表格內(nèi)容                                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);                            // 圖表標(biāo)題                            column.Item().Text("Sample Chart").FontSize(16).Bold().AlignCenter();                            // 創(chuàng)建圖表                            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;            // 創(chuàng)建SKPictureRecorder            using var recorder = new SKPictureRecorder();            var canvas = recorder.BeginRecording(new SKRect(0, 0, width, height));            // 示例數(shù)據(jù)            var data = new[] { 10, 20, 30, 40, 50 };            var maxData = 50;            // 創(chuàng)建畫(huà)筆            using var paint = new SKPaint            {                Color = SKColors.Blue,                IsAntialias = true,                Style = SKPaintStyle.Fill,                StrokeWidth = 2            };            // 計(jì)算條形圖的寬度和間距            var barWidth = width / (data.Length * 2);            var spacing = barWidth;            for (int i = 0; i < data.Length; i++)            {                // 計(jì)算條形圖的高度                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);            }            // 獲取繪制內(nèi)容            var picture = recorder.EndRecording();            // 將SKPicture轉(zhuǎn)換為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());        }    }}

結(jié)語(yǔ)

QuestPDF是一個(gè)強(qiáng)大且易于使用的工具,適合任何需要生成PDF文檔的.NET開(kāi)發(fā)者。無(wú)論您是需要生成報(bào)告、發(fā)票還是其他類(lèi)型的文檔,QuestPDF都能滿(mǎn)足您的需求。立即開(kāi)始使用QuestPDF,體驗(yàn)其強(qiáng)大的功能和簡(jiǎn)潔的API設(shè)計(jì)吧!

更多信息請(qǐng)?jiān)L問(wèn)QuestPDF官網(wǎng)。


該文章在 2024/6/8 23:57:24 編輯過(guò)
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶(hù)的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved