PdfFromUrlRequest

Struct PdfFromUrlRequest 

Source
pub struct PdfFromUrlRequest {
    pub url: String,
    pub filename: Option<String>,
    pub waitsecs: Option<u64>,
    pub landscape: Option<bool>,
    pub download: Option<bool>,
    pub print_background: Option<bool>,
}
Expand description

Request parameters for converting a URL to PDF.

This struct represents the query parameters or request body for the URL-to-PDF endpoint. All fields except url are optional with sensible defaults.

§Required Fields

FieldTypeDescription
urlStringThe URL to convert (must be a valid HTTP/HTTPS URL)

§Optional Fields

FieldTypeDefaultDescription
filenameOption<String>"document.pdf"Output filename for Content-Disposition header
waitsecsOption<u64>5Seconds to wait for JavaScript execution
landscapeOption<bool>falseUse landscape page orientation
downloadOption<bool>falseForce download vs inline display
print_backgroundOption<bool>trueInclude background colors/images

§JavaScript Wait Behavior

The waitsecs parameter controls how long to wait for JavaScript to complete. The service polls for window.isPageDone === true every 200ms. If your page sets this flag, rendering completes immediately; otherwise, it waits the full duration.

// In your web page, signal when rendering is complete:
window.isPageDone = true;

§Examples

§Basic URL conversion

use html2pdf_api::service::PdfFromUrlRequest;

let request = PdfFromUrlRequest {
    url: "https://example.com".to_string(),
    ..Default::default()
};

assert_eq!(request.filename_or_default(), "document.pdf");
assert_eq!(request.wait_duration().as_secs(), 5);

§Landscape PDF with custom filename

use html2pdf_api::service::PdfFromUrlRequest;

let request = PdfFromUrlRequest {
    url: "https://example.com/report".to_string(),
    filename: Some("quarterly-report.pdf".to_string()),
    landscape: Some(true),
    waitsecs: Some(10), // Complex charts need more time
    ..Default::default()
};

assert!(request.is_landscape());
assert_eq!(request.wait_duration().as_secs(), 10);

§Force download (vs inline display)

use html2pdf_api::service::PdfFromUrlRequest;

let request = PdfFromUrlRequest {
    url: "https://example.com/invoice".to_string(),
    filename: Some("invoice-2024.pdf".to_string()),
    download: Some(true), // Forces "Content-Disposition: attachment"
    ..Default::default()
};

assert!(request.is_download());

§HTTP API Usage

§As Query Parameters (GET request)

GET /pdf?url=https://example.com&filename=report.pdf&landscape=true&waitsecs=10

§As JSON Body (POST request, if supported)

{
    "url": "https://example.com",
    "filename": "report.pdf",
    "landscape": true,
    "waitsecs": 10,
    "download": false,
    "print_background": true
}

Fields§

§url: String

The URL to convert to PDF.

Must be a valid HTTP or HTTPS URL. Relative URLs are not supported.

§Validation

The URL is validated using the url crate before processing. Invalid URLs result in a PdfServiceError::InvalidUrl error.

§Examples

Valid URLs:

  • https://example.com
  • https://example.com/path?query=value
  • http://localhost:3000/report

Invalid URLs:

  • example.com (missing scheme)
  • /path/to/page (relative URL)
  • `` (empty string)
§filename: Option<String>

Output filename for the generated PDF.

This value is used in the Content-Disposition header. If not provided, defaults to "document.pdf".

§Notes

  • The filename should include the .pdf extension
  • Special characters are not escaped; ensure valid filename characters
  • The browser may modify the filename based on its own rules
§waitsecs: Option<u64>

Seconds to wait for JavaScript execution before generating the PDF.

Many modern web pages rely heavily on JavaScript for rendering content. This parameter controls the maximum wait time for the page to become ready.

§Behavior

  1. After navigation completes, the service waits up to waitsecs seconds
  2. Every 200ms, it checks if window.isPageDone === true
  3. If the flag is set, PDF generation begins immediately
  4. If timeout is reached, PDF generation proceeds anyway

§Default

5 seconds - suitable for most pages with moderate JavaScript.

§Recommendations

Page TypeRecommended Value
Static HTML1-2
Light JavaScript3-5
Heavy SPA (React, Vue)5-10
Complex charts/graphs10-15
§landscape: Option<bool>

Use landscape page orientation.

When true, the PDF is generated in landscape mode (wider than tall). When false or not specified, portrait mode is used.

§Default

false (portrait orientation)

§Use Cases

  • Wide tables or spreadsheets
  • Horizontal charts and graphs
  • Timeline visualizations
  • Presentation slides
§download: Option<bool>

Force download instead of inline display.

Controls the Content-Disposition header behavior:

ValueHeaderBrowser Behavior
false (default)inline; filename="..."Display in browser
trueattachment; filename="..."Force download dialog

§Default

false - PDF displays inline in the browser’s PDF viewer.

§Notes

Browser behavior may vary. Some browsers always download PDFs regardless of this setting, depending on user preferences.

§print_background: Option<bool>

Include background colors and images in the PDF.

When true, CSS background colors, background images, and other background graphics are included in the PDF output.

§Default

true - backgrounds are included by default.

§Notes

Setting this to false can reduce file size and is useful for print-friendly output where backgrounds are not desired.

Implementations§

Source§

impl PdfFromUrlRequest

Source

pub fn filename_or_default(&self) -> String

Returns the filename, using "document.pdf" as the default.

§Examples
use html2pdf_api::service::PdfFromUrlRequest;

let request = PdfFromUrlRequest::default();
assert_eq!(request.filename_or_default(), "document.pdf");

let request = PdfFromUrlRequest {
    filename: Some("report.pdf".to_string()),
    ..Default::default()
};
assert_eq!(request.filename_or_default(), "report.pdf");
Source

pub fn wait_duration(&self) -> Duration

Returns the JavaScript wait duration.

Defaults to 5 seconds if not specified.

§Examples
use html2pdf_api::service::PdfFromUrlRequest;
use std::time::Duration;

let request = PdfFromUrlRequest::default();
assert_eq!(request.wait_duration(), Duration::from_secs(5));

let request = PdfFromUrlRequest {
    waitsecs: Some(10),
    ..Default::default()
};
assert_eq!(request.wait_duration(), Duration::from_secs(10));
Source

pub fn is_download(&self) -> bool

Returns whether download mode is enabled.

When true, the response includes Content-Disposition: attachment to force a download. When false, uses inline for in-browser display.

§Examples
use html2pdf_api::service::PdfFromUrlRequest;

let request = PdfFromUrlRequest::default();
assert!(!request.is_download()); // Default is inline

let request = PdfFromUrlRequest {
    download: Some(true),
    ..Default::default()
};
assert!(request.is_download());
Source

pub fn is_landscape(&self) -> bool

Returns whether landscape orientation is enabled.

§Examples
use html2pdf_api::service::PdfFromUrlRequest;

let request = PdfFromUrlRequest::default();
assert!(!request.is_landscape()); // Default is portrait

let request = PdfFromUrlRequest {
    landscape: Some(true),
    ..Default::default()
};
assert!(request.is_landscape());
Source

pub fn print_background(&self) -> bool

Returns whether background printing is enabled.

§Examples
use html2pdf_api::service::PdfFromUrlRequest;

let request = PdfFromUrlRequest::default();
assert!(request.print_background()); // Default is true

let request = PdfFromUrlRequest {
    print_background: Some(false),
    ..Default::default()
};
assert!(!request.print_background());

Trait Implementations§

Source§

impl Clone for PdfFromUrlRequest

Source§

fn clone(&self) -> PdfFromUrlRequest

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PdfFromUrlRequest

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for PdfFromUrlRequest

Source§

fn default() -> PdfFromUrlRequest

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for PdfFromUrlRequest

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for PdfFromUrlRequest

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoCollection<T> for T

Source§

fn into_collection<A>(self) -> SmallVec<A>
where A: Array<Item = T>,

Converts self into a collection.
Source§

fn mapped<U, F, A>(self, f: F) -> SmallVec<A>
where F: FnMut(T) -> U, A: Array<Item = U>,

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

impl<T> Paint for T
where T: ?Sized,

Source§

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 primary(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Primary].

§Example
println!("{}", value.primary());
Source§

fn fixed(&self, color: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Fixed].

§Example
println!("{}", value.fixed(color));
Source§

fn rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Rgb].

§Example
println!("{}", value.rgb(r, g, b));
Source§

fn black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Black].

§Example
println!("{}", value.black());
Source§

fn red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Red].

§Example
println!("{}", value.red());
Source§

fn green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Green].

§Example
println!("{}", value.green());
Source§

fn yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Yellow].

§Example
println!("{}", value.yellow());
Source§

fn blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Blue].

§Example
println!("{}", value.blue());
Source§

fn magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Magenta].

§Example
println!("{}", value.magenta());
Source§

fn cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Cyan].

§Example
println!("{}", value.cyan());
Source§

fn white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: White].

§Example
println!("{}", value.white());
Source§

fn bright_black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlack].

§Example
println!("{}", value.bright_black());
Source§

fn bright_red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightRed].

§Example
println!("{}", value.bright_red());
Source§

fn bright_green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightGreen].

§Example
println!("{}", value.bright_green());
Source§

fn bright_yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightYellow].

§Example
println!("{}", value.bright_yellow());
Source§

fn bright_blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlue].

§Example
println!("{}", value.bright_blue());
Source§

fn bright_magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.bright_magenta());
Source§

fn bright_cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightCyan].

§Example
println!("{}", value.bright_cyan());
Source§

fn bright_white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightWhite].

§Example
println!("{}", value.bright_white());
Source§

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>

Returns self with the bg() set to [Color :: Primary].

§Example
println!("{}", value.on_primary());
Source§

fn on_fixed(&self, color: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Fixed].

§Example
println!("{}", value.on_fixed(color));
Source§

fn on_rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Rgb].

§Example
println!("{}", value.on_rgb(r, g, b));
Source§

fn on_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Black].

§Example
println!("{}", value.on_black());
Source§

fn on_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Red].

§Example
println!("{}", value.on_red());
Source§

fn on_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Green].

§Example
println!("{}", value.on_green());
Source§

fn on_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Yellow].

§Example
println!("{}", value.on_yellow());
Source§

fn on_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Blue].

§Example
println!("{}", value.on_blue());
Source§

fn on_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Magenta].

§Example
println!("{}", value.on_magenta());
Source§

fn on_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Cyan].

§Example
println!("{}", value.on_cyan());
Source§

fn on_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: White].

§Example
println!("{}", value.on_white());
Source§

fn on_bright_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlack].

§Example
println!("{}", value.on_bright_black());
Source§

fn on_bright_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightRed].

§Example
println!("{}", value.on_bright_red());
Source§

fn on_bright_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightGreen].

§Example
println!("{}", value.on_bright_green());
Source§

fn on_bright_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightYellow].

§Example
println!("{}", value.on_bright_yellow());
Source§

fn on_bright_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlue].

§Example
println!("{}", value.on_bright_blue());
Source§

fn on_bright_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.on_bright_magenta());
Source§

fn on_bright_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightCyan].

§Example
println!("{}", value.on_bright_cyan());
Source§

fn on_bright_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightWhite].

§Example
println!("{}", value.on_bright_white());
Source§

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 bold(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Bold].

§Example
println!("{}", value.bold());
Source§

fn dim(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Dim].

§Example
println!("{}", value.dim());
Source§

fn italic(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Italic].

§Example
println!("{}", value.italic());
Source§

fn underline(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Underline].

§Example
println!("{}", value.underline());

Returns self with the attr() set to [Attribute :: Blink].

§Example
println!("{}", value.blink());

Returns self with the attr() set to [Attribute :: RapidBlink].

§Example
println!("{}", value.rapid_blink());
Source§

fn invert(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Invert].

§Example
println!("{}", value.invert());
Source§

fn conceal(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Conceal].

§Example
println!("{}", value.conceal());
Source§

fn strike(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Strike].

§Example
println!("{}", value.strike());
Source§

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 mask(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Mask].

§Example
println!("{}", value.mask());
Source§

fn wrap(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Wrap].

§Example
println!("{}", value.wrap());
Source§

fn linger(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Linger].

§Example
println!("{}", value.linger());
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.

Returns self with the quirk() set to [Quirk :: Clear].

§Example
println!("{}", value.clear());
Source§

fn resetting(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Resetting].

§Example
println!("{}", value.resetting());
Source§

fn bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Bright].

§Example
println!("{}", value.bright());
Source§

fn on_bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: OnBright].

§Example
println!("{}", value.on_bright());
Source§

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);
Source§

fn new(self) -> Painted<Self>
where Self: Sized,

Create a new Painted with a default Style. Read more
Source§

fn paint<S>(&self, style: S) -> Painted<&Self>
where S: Into<Style>,

Apply a style wholesale to self. Any previous style is replaced. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,