Blazor страниц генерировать HTML в PDF - PullRequest
0 голосов
/ 05 марта 2020

Я хочу напечатать визуализированный модал, который открывается с некоторой информацией о транспортном средстве, кнопка присутствует на модале и при щелчке должна конвертировать модал HTML в PDF.

Пожалуйста, сообщите, если есть C# Функция или около того, что я могу использовать, которая будет извлекать текущий HTML Я хочу преобразовать в PDF, или направить меня в правильном направлении. Я делал C# только около 2 месяцев, поэтому мне не хватает опыта и знаний.

Редактировать: Также пытаюсь заставить код использовать CSS при выгрузке PDF.

У меня есть добавили следующий код.

References, et c. добавлено.

@using BidWheels.Configuration;
@using BidWheels.Shared.Controls;
@using BidWheels.Data;
@using BidWheels.CustomProviders;
@using BidWheels.Services;
@using System.Timers;
@using Syncfusion.Pdf;
@using Syncfusion.HtmlConverter;
@using System.Linq;
@using System.Web;
@using Microsoft.AspNetCore.Http;

@inject AppState AppState;
@inject UsersDAL UsersDAL;
@inject MainDAL MainDAL;
@inject NotificationService NotificationService;
@inject GeneralConfiguration GeneralConfiguration;
@inject GlobalVar GlobalVar;
@inject GlobalVarShared GlobalVarShared;
@inject Microsoft.JSInterop.IJSRuntime JS
@inject IHttpContextAccessor httpContextAccessor

Кнопка для c функции для создания PDF

        </div>
        <button class="btn btn-outline-success" @onclick="@CreatePDF">Generate PDF</button>
    </div>

Эта функция вызывается кнопкой.

@functions {

    void CreatePDF() 
    {

>         //Initialize HTML to PDF converter
>         //HtmlToPdfConverter htmlConverter = new HtmlToPdfConverter(HtmlRenderingEngine.WebKit);
>         //WebKitConverterSettings settings = new WebKitConverterSettings();
>         //Set WebKit path
>         //settings.WebKitPath = Server.MapPath("~/QtBinaries");
>         //Assign WebKit settings to HTML converter
>         //htmlConverter.ConverterSettings = settings;
>         //Get the current URL
>         //string url = HttpContext;
>         //Convert URL to PDF
>         //PdfDocument document = htmlConverter.Convert(url);
>         //Save the document
>         //document.Save("Sample.pdf", HttpContext.Current.Response, HttpReadType.Save);

Code updated to below
        HtmlToPdfConverter htmlConverter = new HtmlToPdfConverter();
        WebKitConverterSettings webKitSettings = new WebKitConverterSettings();
        webKitSettings.WebKitPath = Directory.GetCurrentDirectory() + "\\wwwroot" + @"\QtBinariesWindows\";
        webKitSettings.MediaType = MediaType.Print;
        webKitSettings.Orientation = PdfPageOrientation.Portrait;
        htmlConverter.ConverterSettings = webKitSettings;
        Convert HTML to PDF.
        string baseUrl = @"" + Directory.GetCurrentDirectory() + "/wwwroot/css/";
        string HTMLBody = await JS.InvokeAsync<string>("getHTMLtoRender", PDFBody);
        PdfDocument pdfDocument = htmlConverter.Convert(HTMLBody, baseUrl);
        MemoryStream memoryStream = new MemoryStream();
        Save and close the document instance.
        pdfDocument.Save(memoryStream);
        JS.SaveAs("Sample.pdf", memoryStream.ToArray());

    }

}

Генерируются следующие ошибки.

Сообщения об ошибках, сгенерированные кодом для вышеуказанного:

Error messages generated by the code for the above

Новые сгенерированные ошибки и lib:

New errors generated and lib

1 Ответ

0 голосов
/ 05 марта 2020

Я всегда находил программирование c Работа с PDF очень сложной. Если вам действительно нужен способ программирования c, взгляните на это: Преобразование HTML в PDF. NET. В противном случае я бы посоветовал вам использовать функцию печати в браузерах с инструментом печати в pdf, который, по крайней мере, обычно уже установлен в каждой системе, которую я видел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...