是否有可能从HTML模板生成PDF/屏幕截图,而不是在chrome库中生成URL
?
func printToPDF(urlstr string, res *[]byte) chromedp.Tasks {
return chromedp.Tasks{
chromedp.Navigate(urlstr),
//page.SetDocumentContent("body", "<h1>Hello world</h1>"), Something like this is this possible?
chromedp.ActionFunc(func(ctx context.Context) error {
buf, _, err := page.PrintToPDF().WithPrintBackground(false).Do(ctx)
if err != nil {
return err
}
*res = buf
return nil
}),
}
}
发布于 2022-05-18 06:18:36
从https://github.com/chromedp/chromedp/issues/836#issuecomment-850244316复制的答案
package main
import (
"context"
"io/ioutil"
"log"
"github.com/chromedp/cdproto/page"
"github.com/chromedp/chromedp"
)
func main() {
ctx, cancel := chromedp.NewContext(context.Background())
defer cancel()
// construct your html
html := "<html><body>test</body></html>"
if err := chromedp.Run(ctx,
chromedp.Navigate("about:blank"),
chromedp.ActionFunc(func(ctx context.Context) error {
frameTree, err := page.GetFrameTree().Do(ctx)
if err != nil {
return err
}
return page.SetDocumentContent(frameTree.Frame.ID, html).Do(ctx)
}),
chromedp.ActionFunc(func(ctx context.Context) error {
buf, _, err := page.PrintToPDF().WithPrintBackground(false).Do(ctx)
if err != nil {
return err
}
return ioutil.WriteFile("sample.pdf", buf, 0644)
}),
); err != nil {
log.Fatal(err)
}
}
https://stackoverflow.com/questions/67733845
复制相似问题