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); 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); // 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(); // } 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/chrome.log"); // argList.add("--v=2"); // 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(); } }