class_docstr: Internal wrapper to sync trame view with Plotter.
  
  Parameters
  ----------
  plotter : pyvista.Plotter
      Target Plotter instance to view.
  server : trame.Server, optional
      Current Server for Trame Application.
  suppress_rendering : bool, default=False
      Whether to suppress rendering on the Plotter.
class_docstr_tok: ["Internal","wrapper","to","sync","trame","view","with","Plotter",".","Parameters","--","--","--","--","--","plotter",":","pyvista.Plotter","Target","Plotter","instance","to","view",".","server",":","trame.Server",",","optional","Current","Server","for","Trame","Application",".","suppress_rendering",":","bool",",","default=False","Whether","to","suppress","rendering","on","the","Plotter","."]
docstr: Take screenshot and add attachament.
  
  Returns
  -------
  memoryview
      Screenshot as a ``memoryview``.
docstr_tok: ["Take","screenshot","and","add","attachament",".","Returns","--","--","--","-","memoryview","Screenshot","as","a","``","memoryview","``","."]
code: def screenshot(self):
      """Take screenshot and add attachament.
  
      Returns
      -------
      memoryview
          Screenshot as a ``memoryview``.
  
      """
      self.plotter.render()
      self.update()  # makes sure the plotter and views are in sync
      buffer = io.BytesIO()
      self.plotter.screenshot(filename=buffer)
      buffer.seek(0)
      return memoryview(buffer.read())
  
imports: import io
  from trame.app import get_server
  from trame_client.ui.core import AbstractLayout
  import pyvista
label_desc: Use image node_id 18 for calling the BaseViewer obj's underlying member method code with example usage: obj.screenshot() and returns: memoryview