You might be able to get some ideas from the vtkImageResliceMapper code, specifically the code in
vtkImageResliceMapper::UpdateResliceInformation() that sets these parameters for vtkImageReslice. That code gets the points where the plane cuts the volume’s bounding box, and uses them to compute the bounds to use for the plane. Once the bounds are known, they can be used to compute the OutputOrigin and OutputExtent if the Spacing is known.
If the input volume has isotropic spacing (same in all directions), then the OutputSpacing can just be the input volume spacing. Otherwise, it’s often best to use min(spacing[0], spacing[1]) or min(min(spacing[0],spacing[1]),spacing[2]).