Програми для обліку

Українське програмне забезпечення з відкритим кодом

C#

Дописи

Програмування / C#

06.11.2024 10:40 C#

QuestPDF — сучасна бібліотека .NET для створення документів PDF

QuestPDF

QuestPDF — це бібліотека .NET із відкритим вихідним кодом для створення PDF-файлів

Для програмування використовую Visual Studio Code.

В програмі Visual Studio Code створюємо новий проект
dotnet new console

Додаємо до проекту пакет QuestPDF
dotnet add package QuestPDF

Запуск програми
dotnet run

Приклад
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

//Назва та розмір колонок
Dictionary<string, int> Columns = new()
{
    { "№", 20 },
    { "Номенклатура", 400 },
    { "Кількість", 50 },
    { "Ціна", 50 },
    { "Сума", 50 }
};

List<Records> Records =
[
    new Records(1, "Хліб", 1, 25, 25),
    new Records(2, "Батон", 2, 30, 60),
    new Records(3, "Булка", 1, 40, 40)
];

QuestPDF.Settings.License = LicenseType.Community;
Document doc = Document.Create(container =>
{
    container.Page(page =>
    {
        page.Size(PageSizes.A4);
        page.Margin(10, Unit.Point);

        page.Content().Column(x =>
        {
            //Назва
            x.Item().Text("Документ").FontSize(14).Bold();
            x.Item().PaddingVertical(5).LineHorizontal(1);

            x.Item().Table(table =>
            {
                table.ColumnsDefinition(cols =>
                {
                    foreach (var item in Columns.Values)
                        cols.ConstantColumn(item);
                });

                table.Header(cell =>
                {
                    foreach (var item in Columns.Keys)
                        cell.Cell().Border(1).Padding(1).Text(item).FontSize(8).AlignCenter();
                });

                foreach (var record in Records)
                {
                    table.Cell().Border(1).Padding(1).Text(record.НомерРядка.ToString()).FontSize(8).AlignCenter();
                    table.Cell().Border(1).Padding(1).Text(record.Номенклатура).FontSize(8);
                    table.Cell().Border(1).Padding(1).Text(record.Кількість.ToString()).FontSize(8).AlignCenter();
                    table.Cell().Border(1).Padding(1).Text(record.Ціна.ToString()).FontSize(8).AlignRight();
                    table.Cell().Border(1).Padding(1).Text(record.Сума.ToString()).FontSize(8).AlignRight();
                }
            });
        });
    });
});

doc.GeneratePdfAndShow();

record Records(int НомерРядка, string Номенклатура, int Кількість, float Ціна, float Сума);

Сайт
GitHub
NuGet


© accounting.org.ua - 2024