C# Blazor页面生成HTML到PDF

C# Blazor页面生成HTML到PDF,c#,blazor,C#,Blazor,我想打印一个呈现的模式,该模式会打开一些车辆信息,按钮出现在模式上,单击该按钮应将模式HTML转换为PDF 请告知是否有一个C#函数或其他我可以使用的函数,它将提取我想要转换为PDF的当前HTML,或引导我朝着正确的方向前进。我做C#才2个月,缺乏经验和专业知识 编辑:也尝试让代码在转储PDF时使用CSS 我添加了以下代码 增加了参考资料等 @using BidWheels.Configuration; @using BidWheels.Shared.Controls; @using BidWh

我想打印一个呈现的模式,该模式会打开一些车辆信息,按钮出现在模式上,单击该按钮应将模式HTML转换为PDF

请告知是否有一个C#函数或其他我可以使用的函数,它将提取我想要转换为PDF的当前HTML,或引导我朝着正确的方向前进。我做C#才2个月,缺乏经验和专业知识

编辑:也尝试让代码在转储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
按钮来处理生成PDF的函数

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

生成PDF
这是按钮调用的函数

@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());

    }

}
@函数{
void CreatePDF()
{
>//初始化HTML到PDF转换器
>//HtmlToPdfConverter htmlConverter=新的HtmlToPdfConverter(HtmlRenderingEngine.WebKit);
>//WebKitConverterSettings=新建WebKitConverterSettings();
>//设置WebKit路径
>//settings.WebKitPath=Server.MapPath(“~/QtBinaries”);
>//将WebKit设置分配给HTML转换器
>//htmlConverter.ConverterSettings=设置;
>//获取当前URL
>//字符串url=HttpContext;
>//将URL转换为PDF
>//PdfDocument document=htmlConverter.Convert(url);
>//保存文档
>//document.Save(“Sample.pdf”,HttpContext.Current.Response,HttpReadType.Save);
代码更新如下
HtmlToPdfConverter htmlConverter=新的HtmlToPdfConverter();
WebKitConverterSettings webKitSettings=新的WebKitConverterSettings();
webKitSettings.WebKitPath=Directory.GetCurrentDirectory()+“\\wwwroot”+@“\QtBinariesWindows\”;
webKitSettings.MediaType=MediaType.Print;
webKitSettings.Orientation=PdfPageOrientation.patrait;
htmlConverter.ConverterSettings=webKitSettings;
将HTML转换为PDF。
字符串baseUrl=@“+目录。GetCurrentDirectory()+”/wwwroot/css/”;
字符串HTMLBody=await JS.InvokeAsync(“gethtmltrender”,PDFBody);
PdfDocument PdfDocument=htmlConverter.Convert(HTMLBody,baseUrl);
MemoryStream MemoryStream=新的MemoryStream();
保存并关闭文档实例。
pdfDocument.Save(memoryStream);
SaveAs(“Sample.pdf”,memoryStream.ToArray());
}
}
正在生成以下错误

由上述代码生成的错误消息:

生成的新错误和库:


我总是发现编程处理PDF非常困难。 如果您确实需要一种编程方式,请查看以下内容:。
否则,我建议您使用带有打印到pdf工具的浏览器打印功能,当然,我看到的每个系统上通常都至少安装了一个。一旦您按照说明创建了pdf,您就可以使用
Append.Blazor.Printing
来创建本机打印对话框。你可以看到博客帖子


在blazor中访问
HttpContext
不是可行的解决方案。如果您需要将应用程序切换到WASM应用程序,它将无法正常工作,Blazor的主要目标是在浏览器中运行。改用web api。如果仍要访问当前的
HttpContext
,请尝试此解决方案