我想打印一个渲染的模态框,其中包含一些车辆信息。按钮位于模态框上,点击后应将模态框HTML转换为PDF。
请告知是否有可用的C#函数或其他方法,可以提取我要转换为PDF的当前HTML,或指导我正确的方向。我只学习了大约2个月的C#,缺乏经验和专业知识。
编辑:还尝试使代码在转储PDF时使用CSS。
我已添加以下代码。
已添加引用等。
以下是产生的错误。
以上代码生成的错误消息: 新错误生成和库:
请告知是否有可用的C#函数或其他方法,可以提取我要转换为PDF的当前HTML,或指导我正确的方向。我只学习了大约2个月的C#,缺乏经验和专业知识。
编辑:还尝试使代码在转储PDF时使用CSS。
我已添加以下代码。
已添加引用等。
@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
</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());
}
}
以下是产生的错误。
以上代码生成的错误消息: 新错误生成和库:
HttpContext
不是可行的解决方案。如果您需要将应用程序切换为 WASM 应用程序,它将无法工作,因为 Blazor 的主要目标是在浏览器中运行。请改用 Web API。如果仍然想访问当前的HttpContext
,请尝试此解决方案 https://dev59.com/5lQJ5IYBdhLWcg3wdVkW - agua from mars