Как быстро создать PDF документ в ASP.NET Ядра в

  Например, нам нужно 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 Ядра, а также идеально подходят некоторые документы, связанные с логикой и набор! !

рекомендация

отwww.cnblogs.com/ZaraNet/p/12037634.html