在 ASP.NET Core 应用程序中,将 HTML 导出为 PDF 并设置为横向模式,可以使用一些第三方库,如 DinkToPdf 或 PuppeteerSharp。以下是使用 DinkToPdf 库的示例,展示了如何将 HTML 导出为横向模式的 PDF。
首先,安装 DinkToPdf 库。你可以使用 NuGet 包管理器来安装:
dotnet add package DinkToPdf
dotnet add package DinkToPdf.Document
在 Startup.cs
文件中配置 DinkToPdf:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
// 注册 DinkToPdf 服务
services.AddSingleton(typeof(DinkToPdf.Contracts.IConverter), new SynchronizedConverter(new PdfTools()));
}
创建一个服务来处理 HTML 到 PDF 的转换:
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;
public class PdfService
{
private readonly IConverter _converter;
public PdfService(IConverter converter)
{
_converter = converter;
}
public byte[] ConvertHtmlToPdf(string htmlContent)
{
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
Orientation = Orientation.Landscape, // 设置为横向模式
PaperSize = PaperKind.A4, // 设置纸张大小
},
Objects = {
new ObjectSettings() {
HtmlContent = htmlContent,
WebSettings = { DefaultEncoding = "utf-8" }
}
}
};
return _converter.Convert(doc);
}
}
在控制器中使用这个服务来生成 PDF:
using Microsoft.AspNetCore.Mvc;
public class HomeController : Controller
{
private readonly PdfService _pdfService;
public HomeController(PdfService pdfService)
{
_pdfService = pdfService;
}
public IActionResult ExportToPdf()
{
string htmlContent = "<html><body><h1>Hello, PDF!</h1></body></html>";
byte[] pdfBytes = _pdfService.ConvertHtmlToPdf(htmlContent);
return File(pdfBytes, "application/pdf", "example.pdf");
}
}
确保在 Startup.cs
中注册 PdfService
:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
// 注册 DinkToPdf 服务
services.AddSingleton(typeof(DinkToPdf.Contracts.IConverter), new SynchronizedConverter(new PdfTools()));
// 注册 PdfService
services.AddTransient<PdfService>();
}
启动你的应用程序,并访问 /Home/ExportToPdf
。你应该会看到一个生成的 PDF 文件,并且它是横向模式的。
领取专属 10元无门槛券
手把手带您无忧上云