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();
    }
}