package com.example.htmltopdf.Controller;
import com.microsoft.playwright.Browser;
import com.microsoft.playwright.BrowserType;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.Playwright;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.nio.file.Paths;
/**
* 类描述:
*
* @author 09946
* @version 1.0
* @date 2024/2/20 17:53
*/
@RestController
@RequestMapping("/wsy")
public class TestPdfController {
private Playwright playwright;
private Page page;
private String htmlFilePath;
private Page.PdfOptions pdfOptions;
private Browser browser;
{
playwright = Playwright.create();
// 启动Chromium浏览器,并确保在无头模式下运行
browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(true));
// 本地HTML文件的路径
htmlFilePath = "file:///mnt/test.html";
// 设置PDF生成的选项
pdfOptions = new Page.PdfOptions()
.setPath(Paths.get("/mnt/output.pdf"))
.setFormat("A4")
.setPrintBackground(true);
}
@GetMapping("/getPdf")
public void getPdf() {
// 创建一个Playwright实例
try {
// 创建一个新的页面
page = browser.newPage();
// 加载本地HTML文件
page.navigate(htmlFilePath);
// 将页面转换为PDF
page.pdf(pdfOptions);
// 关闭页面和浏览器
page.close();
System.out.println("PDF生成成功!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
pom依赖代码
<dependency>
<groupId>com.microsoft.playwright</groupId>
<artifactId>playwright</artifactId>
<version>1.28.0</version>
</dependency>
字体文件和运行报错依赖下载
链接:https://pan.baidu.com/s/1n7EtuzbYKjWKGaU8WJ0PlA
提取码:1519