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 { private static Browser browser; private static volatile boolean isBrowserClosed; static { try { BrowserFetcher.downloadIfNotExist(null); for (int i = 0;i < 5; i++) { log.info("##### start genPdf " + i); Thread t = new Thread(new Runnable() { @Override public void run() { try { genPdf("https://testtamper.tanpuyun.com/hangjiapc/#/billingPdf"); } catch (Throwable e) { log.error("#### {}, error {}", e); e.printStackTrace(); } } }); t.start(); } // 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"); // argList.add("--enable-logging=/data/logs/chrome22.log --v=1"); // browser = Puppeteer.launch(options); isBrowserClosed = false; } catch (Throwable t) { log.error("error in init genPdf", t); } } public static void genPdf(String url) throws Throwable { 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"); argList.add("--enable-logging=/data/logs/chrome22.log --v=1"); browser = Puppeteer.launch(options); Page page = browser.newPage(); page.goTo(url); PDFOptions pdfOptions = new PDFOptions(); pdfOptions.setPath("/usr/src/myapp/test.pdf"); pdfOptions.setPrintBackground(true); byte[] pdfBytes = page.pdf(pdfOptions); ScreenshotOptions screenshotOptions = new ScreenshotOptions(); //设置截图范围 Clip clip = new Clip(1.0,1.56,400,400); screenshotOptions.setClip(clip); screenshotOptions.setType("png"); //设置存放的路径 screenshotOptions.setPath("/usr/src/myapp/test.png"); page.screenshot(screenshotOptions); page.close(); // browser.close(); } }