chromiumoxide icon indicating copy to clipboard operation
chromiumoxide copied to clipboard

Create pdf from static html content instead of URL

Open natarajanmca11 opened this issue 2 years ago • 2 comments

Hi Team,

Need to generate pdf file from the static HTML content instead of URL.

natarajanmca11 avatar Aug 24 '21 15:08 natarajanmca11

You can use Page::set_content("<html_str>") for this.

Here is a full example using tokio:

use futures::StreamExt;

use chromiumoxide::{
    browser::{Browser, BrowserConfig},
    cdp::browser_protocol::page::PrintToPdfParams,
};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let (browser, mut handler) = Browser::launch(BrowserConfig::builder().build()?).await?;

    async_std::task::spawn(async move {
        loop {
            let _ = handler.next().await.unwrap();
        }
    });

    let page = browser.new_page("about:blank").await?;
    page.set_content(r"
    <body>
        <h1>This was set via chromiumoxide</h1>
    </body>
    ").await?;

    page.save_pdf(PrintToPdfParams::default(), "mypdf.pdf").await?;
    Ok(())
}

FrankenApps avatar Jan 30 '22 15:01 FrankenApps

Nice, the set_content is a lot faster than using a data url !

Wicpar avatar May 22 '23 17:05 Wicpar