docs: def preview(self, page, filelike, format='png', dpi=72, background_colour=0xFFFFFF):
          """Render a preview image of a page.
  
          Parameters
          ----------
          page: positive integer
              Which page to render. Must be in the range [1, page_count]
          filelike: path or file-like object
              Can be a filename as a string, a Python file object, or something
              which behaves like a Python file object.  For example, if you were
              using the Django web framework, an HttpResponse object could be
              passed to render the preview to the browser (as long as you remember
              to set the mimetype of the response).  If you pass a filename, the
              existing contents will be overwritten.
          format: string
              The image format to use for the preview. ReportLab uses the Python
              Imaging Library (PIL) internally, so any PIL format should be
              supported.
          dpi: positive real
              The dots-per-inch to use when rendering.
          background_colour: Hex colour specification
              What color background to use.
  
          Notes
          -----
          If you are creating this sheet for a preview only, you can pass the
          pages_to_draw parameter to the constructor to avoid the drawing function
          being called for all the labels on pages you'll never look at. If you
          preview a page you did not tell the sheet to draw, you will get a blank
          image.
  
          Raises
          ------
          ValueError:
              If the page number is not valid.
  
          """
          # Check the page number.
          if page < 1 or page > self.page_count:
              raise ValueError("Invalid page number; should be between 1 and {0:d}.".format(self.page_count))
  
          # Shade any remaining missing labels if desired.
          self._shade_remaining_missing()
  
          # Rendering to an image (as opposed to a PDF) requires any background
          # to have an integer width and height if it is a ReportLab Image
          # object. Drawing objects are exempt from this.
          oldw, oldh = None, None
          if isinstance(self._bgimage, Image):
              oldw, oldh = self._bgimage.width, self._bgimage.height
              self._bgimage.width = int(oldw) + 1
              self._bgimage.height = int(oldh) + 1
  
          # Let ReportLab do the heavy lifting.
          renderPM.drawToFile(self._pages[page-1], filelike, format, dpi, background_colour)
  
          # Restore the size of the background image if we changed it.
          if oldw:
              self._bgimage.width = oldw
              self._bgimage.height = oldh