PagePdfGenUtils.java 1.78 KB
Newer Older
张辰's avatar
张辰 committed
1 2 3 4 5 6
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;
张辰's avatar
张辰 committed
7
import com.ruiyun.jvppeteer.options.*;
张辰's avatar
张辰 committed
8 9
import lombok.extern.slf4j.Slf4j;

张辰's avatar
1  
张辰 committed
10
import java.io.IOException;
张辰's avatar
张辰 committed
11 12 13 14 15
import java.util.ArrayList;

@Slf4j
public class PagePdfGenUtils {

张辰's avatar
1  
张辰 committed
16 17 18 19 20 21 22 23
    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();
张辰's avatar
张辰 committed
24

张辰's avatar
1  
张辰 committed
25 26
        argList.add("--no-sandbox");
        argList.add("--disable-setuid-sandbox");
张辰's avatar
张辰 committed
27
        argList.add("--enable-logging=stderr --v=1 > /usr/src/myapp/log.txt 2>&1");
张辰's avatar
1  
张辰 committed
28 29 30
        Browser browser = Puppeteer.launch(options);
        Page page = browser.newPage();
        page.goTo(url);
张辰's avatar
张辰 committed
31

张辰's avatar
1  
张辰 committed
32 33
        PDFOptions pdfOptions = new PDFOptions();
        pdfOptions.setPath("/usr/src/myapp/test.pdf");
张辰's avatar
张辰 committed
34 35 36 37
        pdfOptions.setPrintBackground(true);
//        pdfOptions.setDisplayHeaderFooter(true);
//        pdfOptions.setHeaderTemplate("<span></span>");
//        pdfOptions.
张辰's avatar
1  
张辰 committed
38
        byte[] pdfBytes = page.pdf(pdfOptions);
张辰's avatar
张辰 committed
39 40 41 42 43

        ScreenshotOptions screenshotOptions = new ScreenshotOptions();
        //设置截图范围
        Clip clip = new Clip(1.0,1.56,400,400);
        screenshotOptions.setClip(clip);
张辰's avatar
`  
张辰 committed
44
        screenshotOptions.setType("png");
张辰's avatar
张辰 committed
45 46 47 48
        //设置存放的路径
        screenshotOptions.setPath("/usr/src/myapp/test.png");
        page.screenshot(screenshotOptions);

张辰's avatar
1  
张辰 committed
49 50
        page.close();
        browser.close();
张辰's avatar
张辰 committed
51 52
    }
}