netcore Playwright 安装-windows
·
一、下载最新版本PowerShell
https://github.com/PowerShell/PowerShell/releases/tag/v7.4.11
二、新建netcore项目,安装包
<PackageReference Include="Microsoft.Playwright" Version="1.27.1" />
在项目目录下运行:
pwsh bin/Debug/net8.0/playwright.ps1 install
然后添加上代码:
using Autofac.Features.Metadata;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Playwright;
using System.Drawing.Printing;
using System.IO;
using System.Threading.Tasks;
namespace SaaS.OfficialWebSite.Web.Controllers
{
public class PdfController : Controller
{
private readonly ILogger<PdfController> _logger;
public PdfController(ILogger<PdfController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
return View();
}
[HttpPost]
public async Task<IActionResult> GeneratePdf([FromBody] PdfRequest request)
{
if (string.IsNullOrWhiteSpace(request.Url) || !Uri.TryCreate(request.Url, UriKind.Absolute, out _))
{
return BadRequest(new { message = "请输入有效的网址" });
}
try
{
// 生成PDF
var pdfBytes = await GeneratePdfInternal(request.Url);
return File(pdfBytes, "application/pdf", $"webpage_{DateTime.Now:yyyyMMddHHmmss}.pdf");
}
catch (Exception ex)
{
_logger.LogError(ex, "生成PDF时出错");
return StatusCode(500, new { message = $"生成PDF时出错: {ex.Message}" });
}
}
private async Task<byte[]> GeneratePdfInternal(string url)
{
// 创建 Playwright 实例
var playwright = await Playwright.CreateAsync().ConfigureAwait(false);
await using var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions
{
Headless = true
});
var page = await browser.NewPageAsync();
try
{
// 导航到目标URL
await page.GotoAsync(url, new PageGotoOptions
{
WaitUntil = WaitUntilState.NetworkIdle,
Timeout = 30000
});
// 生成PDF
var datas = await page.PdfAsync();
return datas;
}
finally
{
await page.CloseAsync();
}
}
}
public class PdfRequest
{
public string Url { get; set; }
}
}
运行效果:在线网页转PDF工具

更多推荐
所有评论(0)