Skip to content

API

The API for function-based and component-based usage have the same parameters, but the usage methods are different. Component-based usage includes specific details on slots.

Function (Parameters) & Component (Component Properties)

OptionTypeDescription
content() => HTMLElement | string | MaybeRef<HTMLElement | undefined>A ref pointing to the content to be printed or a string that can be obtained using querySelector. Alternatively, pass a ref or a string directly to the callback returned by createPrint
bodyClass?stringOne or more class names to pass to the print window, separated by spaces
documentTitle?stringSet the title for printing when saving as a file. Ignored when passing a custom print option
fonts?{ family: string, source: string; weight?: string; style?: string; }[]A list of fonts to load into the printing iframe. This is useful if you are using custom fonts
ignoreGlobalStyles?booleanIgnore all <style> and <link type="stylesheet" /> tags from <head>
nonce?stringSet the nonce attribute for allow-listing script and style elements for Content Security Policy (CSP)
onAfterPrint?() => voidCallback function that triggers after the print dialog is closed regardless of if the user selected to print or cancel
onBeforePrint?() => Promise<void>Callback function that triggers before print. This can be used to change the content on the page before printing as an alternative to, or in conjunction with @media print queries
onPrintError?(errorLocation: 'onBeforePrint' | 'print', error: Error) => voidCalled if there is a printing error serious enough that printing cannot continue. Currently limited to Promise rejections in onBeforePrint, and print. Use this to attempt to print again. errorLocation will tell you where the Promise was rejected
pageStyle?stringreact-to-print sets some basic styles to help improve page printing, notably, removing the header and footer that most browsers add. Use this to override these styles and provide your own
preserveAfterPrint?booleanRemove the iframe after printing. NOTE: preserveAfterPrint will run before the iframe is removed
print?(iframe: HTMLIFrameElement) => Promise<void>If passed, this function will be used instead of window.print to print the content. Use this to print in non-browser environments such as Electron
suppressErrors?booleanWhen passed, prevents console logging of errors

Component Slots

名称参数说明
default(props:{handlePrint: () => void})Default slot used to consume the print functionality.
content()Slot for passing the content node to be printed. Note: When the content attribute is passed to the component, the slot takes precedence over the attribute.

Types

ts
/**
 * Fonts to load into the print iframe
 */
 FontOption {
   family: string
   source: string
   weight?: string
   style?: string
 }
 /**
  * Content to be printed
  */
  content: () => HTMLElement | string | MaybeRef<HTMLElement | undefined>
  /**
   * One or more class names to pass to the print window, separated by spaces
   */
  bodyClass?: string
  /**
   * Set the title for printing when saving as a file
   */
  documentTitle?: string
  /**
   * You may optionally provide a list of fonts which will be loaded into the printing iframe.
   * This is useful if you are using custom fonts
   */
  fonts?: FontOption[]
  /**
   * Set the nonce attribute for whitelisting script and style -elements for CSP (content security policy)
   */
  nonce?: string
  /**
   * Callback function to trigger after print
   */
  onAfterPrint?: () => void
  /**
   * Callback function to trigger before print Callback function to trigger before page content is retrieved for printing
   */
  onBeforePrint?: () => Promise<any>
  /**
   * Callback function to listen for printing errors
   */
  onPrintError?: (errorLocation: "onBeforePrint" | "print", error: Error) => void
  /**
   * Override default print window styling
   */
  pageStyle?: string | (() => string)
  /**
   * Override the default `window.print` method that is used for printing
   */
  print?: (target: HTMLIFrameElement) => Promise<any>
  /**
   * Remove the iframe after printing.
   * NOTE: `onAfterPrint` will run before the iframe is removed
   */
  preserveAfterPrint?: boolean
  /**
   * Suppress error messages
   */
  suppressErrors?: boolean