package com.tanpu.community.util; import com.ruiyun.jvppeteer.core.Puppeteer; import com.ruiyun.jvppeteer.core.browser.Browser; import com.ruiyun.jvppeteer.core.browser.BrowserFetcher; import com.ruiyun.jvppeteer.core.page.Page; import com.ruiyun.jvppeteer.options.*; import lombok.extern.slf4j.Slf4j; import java.io.IOException; import java.util.ArrayList; @Slf4j public class PagePdfGenUtils { public static void genPdf(String url) throws Throwable { BrowserFetcher.downloadIfNotExist(null); ArrayList<String> argList = new ArrayList<>(); LaunchOptions options = new LaunchOptionsBuilder() .withExecutablePath("/usr/bin/google-chrome") .withArgs(argList) .withHeadless(true) .build(); argList.add("--no-sandbox"); argList.add("--disable-setuid-sandbox"); Browser browser = Puppeteer.launch(options); Page page = browser.newPage(); page.goTo(url); PDFOptions pdfOptions = new PDFOptions(); pdfOptions.setPath("/usr/src/myapp/test.pdf"); byte[] pdfBytes = page.pdf(pdfOptions); ScreenshotOptions screenshotOptions = new ScreenshotOptions(); //设置截图范围 Clip clip = new Clip(1.0,1.56,400,400); screenshotOptions.setClip(clip); //设置存放的路径 screenshotOptions.setPath("/usr/src/myapp/test.png"); page.screenshot(screenshotOptions); page.close(); browser.close(); } }