pub struct ChromeBrowserFactory { /* private fields */ }Expand description
Factory for creating Chrome/Chromium browser instances.
Handles Chrome-specific launch options and path detection. Supports both auto-detection and custom Chrome binary paths.
§Thread Safety
This factory is Send + Sync and can be safely shared across threads.
§Example
use html2pdf_api::ChromeBrowserFactory;
// Auto-detect Chrome
let factory = ChromeBrowserFactory::with_defaults();
// Or use custom path
let factory = ChromeBrowserFactory::with_path("/usr/bin/google-chrome".to_string());Implementations§
Source§impl ChromeBrowserFactory
impl ChromeBrowserFactory
Sourcepub fn new<F>(launch_options_fn: F) -> Self
pub fn new<F>(launch_options_fn: F) -> Self
Create factory with custom launch options function.
This is the most flexible constructor, allowing full control over launch options generation.
§Parameters
launch_options_fn- Function called for each browser creation.
§Example
use html2pdf_api::{ChromeBrowserFactory, create_chrome_options, BrowserPoolError};
let factory = ChromeBrowserFactory::new(|| {
// Custom logic here
create_chrome_options(Some("/custom/path"))
.map_err(|e| BrowserPoolError::Configuration(e.to_string()))
});Sourcepub fn with_defaults() -> Self
pub fn with_defaults() -> Self
Create factory with auto-detected Chrome path.
This is the recommended default - lets headless_chrome find Chrome. Works on Linux, macOS, and Windows.
§Platform Detection
The headless_chrome crate searches common installation paths:
| Platform | Paths Searched |
|---|---|
| Linux | /usr/bin/google-chrome, /usr/bin/chromium, etc. |
| macOS | /Applications/Google Chrome.app/... |
| Windows | C:\Program Files\Google\Chrome\... |
§Example
use html2pdf_api::ChromeBrowserFactory;
let factory = ChromeBrowserFactory::with_defaults();Sourcepub fn with_path(chrome_path: String) -> Self
pub fn with_path(chrome_path: String) -> Self
Create factory with custom Chrome binary path.
Use this when Chrome is installed in a non-standard location.
§Parameters
chrome_path- Full path to Chrome/Chromium binary.
§Example
use html2pdf_api::ChromeBrowserFactory;
// Linux
let factory = ChromeBrowserFactory::with_path("/usr/bin/google-chrome".to_string());
// macOS
let factory = ChromeBrowserFactory::with_path(
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome".to_string()
);
// Windows
let factory = ChromeBrowserFactory::with_path(
r"C:\Program Files\Google\Chrome\Application\chrome.exe".to_string()
);Trait Implementations§
Source§impl BrowserFactory for ChromeBrowserFactory
impl BrowserFactory for ChromeBrowserFactory
Source§fn create(&self) -> Result<Browser>
fn create(&self) -> Result<Browser>
Create a new Chrome browser instance.
Calls the launch options function and launches Chrome with those options.
§Errors
- Returns
BrowserPoolError::Configurationif launch options generation fails. - Returns
BrowserPoolError::BrowserCreationif Chrome fails to launch.
Auto Trait Implementations§
impl Freeze for ChromeBrowserFactory
impl !RefUnwindSafe for ChromeBrowserFactory
impl Send for ChromeBrowserFactory
impl Sync for ChromeBrowserFactory
impl Unpin for ChromeBrowserFactory
impl !UnwindSafe for ChromeBrowserFactory
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoCollection<T> for T
impl<T> IntoCollection<T> for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);