前面深度介绍了程序如何直接操作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