Chrome DevTools Protocol异常PrintToPDF is not implemented

java | 2020-03-15 16:16:41

前面深度介绍了程序如何直接操作chrome浏览器 java直接操作chrome谷歌浏览器 实现网页爬虫,今天想实现html网页转pdf

1.chrome启动命令如下

我是再开发调试,所以使用了有头模式方便查看

            //命令启动浏览器
            StringBuffer strCmd=new StringBuffer();
            String os = System.getProperty("os.name");
            if(os.toLowerCase().startsWith("windows")){
                strCmd.append("chrome ");
            }else if(os.toLowerCase().startsWith("linux")){
                strCmd.append("google-chrome ");
            }
            //strCmd.append("--headless ");
            strCmd.append("--disable-gpu ");
            strCmd.append("--enable-automation ");
            strCmd.append("--user-data-dir=chromeHome10 ");
            //port=0 表示自动分配端口并返回启动信息
            strCmd.append("--remote-debugging-port=0 ");

            Process process=Runtime.getRuntime().exec(strCmd.toString());

2.发送打印pdf的消息

webSocketClient.send("{\"sessionId\":\""+sessionId+"\",\"method\":\"Page.printToPDF\",\"params\":{\"transferMode\":\"ReturnAsStream\"},\"id\":4}");

3.异常信息

PrintToPDF is not implemented

接受到消息:{"error":{"code":-32000,"message":"PrintToPDF is not implemented"},"id":4,"sessionId":"00C4346C7824186CEBF0C1F12643E188"}

难道是不能打印pdf

4.解决方法

Page.printToPDF操作一定要在无头模式下进行,有头模式无法调用,所以启动chrome要添加参数:--headless

只是不方便调试,无所谓了

参考文章:https://github.com/puppeteer/puppeteer/issues/576

 

登录后即可回复 登录 | 注册
    
关注编程学问公众号