package main import ( "context" "fmt" "log" "os" "github.com/chromedp/cdproto/page" "github.com/chromedp/chromedp" ) func main() { // create context ctx, cancel := chromedp.NewContext(context.Background()) defer cancel() // capture pdf var buf []byte if err := chromedp.Run(ctx, printToPDF(`https://nightlies.apache.org/flink/flink-docs-master/zh/docs/dev/datastream/overview/`, &buf)); err != nil { log.Fatal(err) } if err := os.WriteFile("test.pdf", buf, 0o644); err != nil { log.Fatal(err) } fmt.Println("wrote test.pdf") } // print a specific pdf page. func printToPDF(urlstr string, res *[]byte) chromedp.Tasks { return chromedp.Tasks{ chromedp.Navigate(urlstr), chromedp.ActionFunc(func(ctx context.Context) error { buf, _, err := page.PrintToPDF().WithPrintBackground(false).Do(ctx) if err != nil { return err } *res = buf return nil }), } }