Бесплатные API .NET для обработки PDF-документов
Библиотека .NET с открытым исходным кодом для создания, редактирования, загрузки и управления PDF-файлами. Добавляйте новые страницы, таблицы, изображения, текст и фигуры в файлы PDF.
QuestPDF — это очень полезная современная библиотека .NET с открытым исходным кодом, которая позволяет разработчикам программного обеспечения с легкостью создавать, читать, изменять и манипулировать PDF-документами. Библиотека очень многофункциональна и предлагает механизм компоновки, разработанный с учетом полной поддержки пейджинга. Библиотека очень проста в обращении и, несомненно, может ускорить ваш жизненный цикл разработки. Библиотека поддерживает возможность горячей перезагрузки, что означает, что она предоставляет разработчикам результаты в реальном времени без необходимости перекомпиляции кода.
Библиотека QuestPDF очень гибкая, и ее очень легко создавать, настраивать и управлять некоторыми из самых сложных документов с помощью всего нескольких строк кода. В библиотеке есть несколько других функций, таких как рисование простого текста, рисование текста с пользовательским стилем, поддержка разбиения на страницы, поддержка пользовательских шрифтов, межбуквенный интервал, настраиваемый интервал между абзацами, поддержка Unicode, вставка изображений, управление соотношением сторон изображения, визуализация границы, вставка гиперссылки, содержание и поворот изображений и так далее.
Начало работы с QuestPDF
Библиотека QuestPDF доступна в виде пакета nuget. Поэтому настоятельно рекомендуется использовать NuGet для установки QuestPDF в ваш проект. Пожалуйста, используйте следующую команду для успешной установки.
Установите QuestPDF из Nuget
// Package Manager
Install-Package QuestPDF
// .NET CLI
dotnet add package QuestPDF
// Package reference in .csproj file
Вы также можете установить его вручную; загрузите файлы последней версии напрямую из репозитория GitHub.
Простое создание PDF-файлов с помощью библиотеки .NET.
Библиотека PDF с открытым исходным кодом QuestPDF позволяет разработчикам программного обеспечения использовать всего пару простых команд кода .NET для создания документов PDF в своих собственных приложениях. Библиотека позволяет разработчикам легко определять размер страницы, поля, цвет фона, стиль текста, размер шрифта, верхний и нижний колонтитулы, содержимое страницы, интервалы и так далее. Также очень легко обновить существующие PDF-файлы.
Создавайте PDF-файлы с помощью библиотеки .NET.
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;
// code in your main method
Document.Create(container =>
{
container.Page(page =>
{
page.Size(PageSizes.A4);
page.Margin(2, Unit.Centimetre);
page.PageColor(Colors.White);
page.DefaultTextStyle(x => x.FontSize(20));
page.Header()
.Text("Hello PDF!")
.SemiBold().FontSize(36).FontColor(Colors.Blue.Medium);
page.Content()
.PaddingVertical(1, Unit.Centimetre)
.Column(x =>
{
x.Spacing(20);
x.Item().Text(Placeholders.LoremIpsum());
x.Item().Image(Placeholders.Image(200, 100));
});
page.Footer()
.AlignCenter()
.Text(x =>
{
x.Span("Page ");
x.CurrentPageNumber();
});
});
})
.GeneratePdf("hello.pdf");
Управление текстом и форматированием через C# API
Библиотека QuestPDF предоставляет несколько важных функций для обработки вставки текста, а также рисования текста внутри документов PDF. Это позволяет разработчикам рисовать текст со стилем по умолчанию, а также с пользовательским стилем, нижним и верхним индексом, настраивать текстовые строки, настраивать интервал между буквами, выравнивание шрифта, устанавливать шаблон типографики, настраиваемый интервал между абзацами, устанавливать направление текста, вставлять номера страниц, добавлять гиперссылки и т. д. на.
Нижний и верхний индекс в файлах PDF через библиотеку .NET
.Text(text =>
{
text.DefaultTextStyle(x => x.FontSize(20));
text.ParagraphSpacing(10);
var highlight = TextStyle.Default.BackgroundColor(Colors.Green.Lighten3);
text.Span("E=mc").Style(highlight);
text.Span("2").Superscript().Style(highlight);
text.Span(" is the equation of mass–energy equivalence.");
text.EmptyLine();
text.Span("H").Style(highlight);
text.Span("2").Subscript().Style(highlight);
text.Span("O").Style(highlight);
text.Span(" is the chemical formula for water.");
});
Добавление изображений в PDF и управление ими с помощью библиотеки C#
Библиотека PDF с открытым исходным кодом QuestPDF включает полную поддержку добавления статических и динамических изображений в приложения C# .NET. Разработчики программного обеспечения могут легко помещать статические изображения в свой PDF-документ в любом распространенном формате растрового изображения, таком как JPG, PNG, BMB и т. д. Для динамических изображений он предлагает гибкие макеты, поэтому трудно предсказать разрешение изображения. Для получения наилучшей четкости изображения рекомендуется генерировать изображения с указанным разрешением. Это очень полезно для создания карт / диаграмм.
Добавляйте изображения в PDF через .NET Library
// it is possible to provide an image as:
// 1) a binary array
byte[] imageData = File.ReadAllBytes("path/to/logo.png")
container.Image(imageData)
// 2) a fileName
container.Image("path/myFile.png")
// 3) a stream
using var stream = new FileStream("logo.png", FileMode.Open);
container.Image(stream);
Вставка таблиц в PDF через C# API
QuestPDF позволяет программистам создавать более сложные структуры, чем любая комбинация элементов Row и Column. Чтобы создать простой экземпляр таблицы, пользователям необходимо описать ширину каждого столбца, а затем поместить в него любое количество строк и столбцов. Библиотека поддерживает такие функции, как добавление верхнего или нижнего колонтитула таблицы, добавление новых строк, вставка новых ячеек, удаление ячеек, диапазоны строк и диапазоны столбцов, чередование ячеек и многое другое.
Создайте простую таблицу в файле PDF с помощью библиотеки .NET
.Border(1)
.Table(table =>
{
table.ColumnsDefinition(columns =>
{
columns.RelativeColumn();
columns.RelativeColumn();
columns.RelativeColumn();
columns.RelativeColumn();
});
// by using custom 'Element' method, we can reuse visual configuration
table.Cell().Row(1).Column(4).Element(Block).Text("A");
table.Cell().Row(2).Column(2).Element(Block).Text("B");
table.Cell().Row(3).Column(3).Element(Block).Text("C");
table.Cell().Row(4).Column(1).Element(Block).Text("D");
// for simplicity, you can also use extension method described in the "Extending DSL" section
static IContainer Block(IContainer container)
{
return container
.Border(1)
.Background(Colors.Grey.Lighten3)
.ShowOnce()
.MinWidth(50)
.MinHeight(50)
.AlignCenter()
.AlignMiddle();
}
});