Например, нам нужно ASP.NET ядра необходимо разработать некоторые простые отчеты через PDF, так как это не сложно, но все-таки бросаются искать какую-то информацию, то поздравляю, этот пост поможет вам, мы Я не буду тратить некоторое ценное время.
В этой статье мы будем использовать для обработки наших DinkToPDF сборки PDF документов в .NET Основных веб-программе! Сейчас у нас есть много говорить, просто начать самое интересное.
предисловие
Вы можете создавать PDF - документы на моем складе , получить исходный код, добро пожаловать , чтобы освободить звезду ...
Теперь мы создадим проект .NET Core , 3.0, как MVC, Апи, что я не забочусь. После создания проекта непосредственно NuGet установка DinkToPDF. Тогда вам нужно скачать мой репозиторий кода « nativeLibrary папку», в котором мы находим два файла 32bit и 64bit, поэтому мы должны правильно выбрать операционную систему для библиотеки. Мы будем выбирать папку 64-битную.
Наконец, мы должны начать библиотеку, и DinkToPDF МОК.
общественный недействительный ConfigureServices (услуги IServiceCollection) { вар контекст = новый CustomAssemblyLoadContext (); context.LoadUnmanagedLibrary (Path.Combine (Directory.GetCurrentDirectory (), " libwkhtmltox.dll " )); services.AddSingleton ( TypeOf (IConverter), новый SynchronizedConverter ( новые PDFTools ())); services.AddControllers (); }
Создание объекта
В реальной ситуации проекта, мы можем собирать данные из базы данных или получать данные из других API. Тем не менее, для простоты, мы будем собирать данные документы в формате PDF местный магазин. В дальнейшем , мы создадим шаблон HTML и хранится в PDF - документе.
общественный класс Employee { общественная строка Name { прибудет ; набор ; } Публичная строка LastName { прибудет ; набор ; } Общественного INT Возраст { прибудет ; набор ; } Публичная строка Пол { прибудут ; набор ; } }
Опять же , мы хотим , чтобы создать новую папку , Services
и какие типы файлов DataServices.cs и TemplateGenerator.cs . Полная структура , чтобы выглядеть следующим образом :
общественного класса DataServices { общественности статический список <Сотрудник> GetAllEmployess () => новый Список <Employee> { новый Employee {Name = " Хао Цзы Чжан " , LastName = " Тернер " , Age = 35 , Пол = " Мужской " }, новый Сотрудник {Name = " Ю Чена " , LastName = " Маркус " , Age = 22 , Пол = " Женский " }, новый сотрудник {Name = " Цзянь Чжи Чу " , LastName = " Martins " , Возраст = 40 , Пол = " Мужской " }, новый сотрудник {Name = " ElderJames " , LastName = " Packner " , Возраст = 30 , Пол = " Женский " }, новый сотрудник {Name = " BlaZui "LastName = " Doe " , Age = 45 ,Пол = " Мужской" } }; }
Добавлен сервис возвращает некоторые данные , используемые для моделирования службы. Мы хотим , чтобы создать шаблон HTML, так что нам нужно изменить TemplateGenerator.cs файл:
общественный класс TempleGenertor { общественности статической строки GetHTMLString () { вар сотрудников = DataServices.GetAllEmployess (); вар SB = новый StringBuilder (); sb.append ( @» <HTML> <HEAD> </ HEAD> <BODY> <DIV класс = 'заголовок'> <h1> Это генерируется отчет в формате PDF !!! </ h1> </ DIV> <таблица Align = 'центр'> <й> Name </ й> <й> LastName </ й> <й> Возраст </ й> <й> Пол </ й> </ TR> " ); Еогеасп ( вар эй в сотрудниках) { sb.AppendFormat ( @» <TR> <TD> {0} </ TD> <TD> {1} </ TD> <TD> {2} </ TD> <TD> {3} </ TD> </ TR> " } sb.append ( @ " </ table> </ body> </ html> " ); вернуть sb.ToString (); } }
Если вы хотите задать стили CSS, вы можете создать несколько папок, а затем настроить API сервера, чтобы выбрать путь.
.header { текст - Align: центр; Цвет: зеленый; обивка - дно: 35px; } Таблица { ширина: 80 % ; граничить - крах: крах; } Тд, е { граница: 1px твердый серый; обивка: 15px; шрифт - размер: 22px; Текст - выравнивание: Центр; } Таблица й { фон - цвет: зеленый; цвет белый; }
Это способ, которым мы создали шаблоны HTML для HTML. Теперь мы можем продолжить логику контроллера.
[Маршрут ( " апи / PDFCreator " )] [ApiController] общественный класс PdfCreatorController: ControllerBase { частное IConverter _converter; общественного PdfCreatorController (IConverter преобразователь) { _converter = преобразователь; } [HttpGet] общественных IActionResult CreatePDF () { вар GlobalSettings = новые GlobalSettings { ColorMode = ColorMode.Color, ориентация =Orientation.Portrait, PaperSize = PaperKind.A4, Маржа = новые MarginSettings {Top = 10 }, DocumentTitle = " PDF Report " }; вар objectSettings = новые ObjectSettings { PagesCount = верно , HtmlContent = TempleGenertor.GetHTMLString (), WebSettings = {DefaultEncoding = " UTF-8 ", UserStyleSheet = Path.Combine (Directory.GetCurrentDirectory (), " активы " , " style.css " )}, HeaderSettings = {FontName = " Arial " , FontSize = 9 , справа = " страница [страница] из [toPage] " , Line = истинно }, FooterSettings = {FontName = " Arial " , FontSize = 9 , строка = верно , Центр = " Report Footer " } }; варPDF = новый HtmlToPdfDocument () { GlobalSettings = GlobalSettings, объекты = {objectSettings} }; вар файл = _converter.Convert (PDF); вернуть файл (файл, " приложения / PDF " ); } }
Код Описание
В приведенном выше коде, мы сначала использовать IConverter интерфейс , чтобы зарегистрировать конвертер с инъекции зависимостей вводится в конструктор . Затем мы создаем два объекта GlobalSettings , objectSettings и использовать их в качестве HtmlToPdfDcoument свойств конфигурации .
Теперь скажем GlobalSettings и ObjectSettings класс.
О классе GlobalSettings
Она включает в себя общие настройки свойств PDF документа. Мы используем только некоторые из этих свойств , чтобы установить режим цвета, ориентацию, размер бумаги, название документа и так далее ... но он также имеет более чем имущество.
О классе ObjectSettings
ObjectSettings
По атрибута контента , связанного PDF документа. Таким образом, мы можем настроить видимость счетчика страниц, содержимое заголовка и колонтитула текста формата документов ( HtmlContent
атрибуты) или в настройках Web.
HtmlContent
Такое свойство является очень важным атрибутом. Он содержит шаблон HTML мы генерируем и отображения главного PDF документа.
WebSettings
Кроме того , очень важно, особенно если есть внешний CSS - файл для настройки стиля. В этом свойстве можно настроить кодировку документа и указать путь к файлу CSS. Если мы рассмотрим это свойство, мы найдем более настраиваемые параметры, такие как фоновые PDF документы, размер текста, и так далее ..
элементы автозагрузки
Размещая маршрут к нашему API, PDF печать интерфейс перенаправления.
Все кажется настолько совершенна, так что мы можем легко создать документ PDF в ASP.NET Ядра, а также идеально подходят некоторые документы, связанные с логикой и набор! !