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