2023-09-24 17:26:46 -04:00
|
|
|
|
using static Vanara.PInvoke.DocumentTarget;
|
2019-12-21 23:08:13 -05:00
|
|
|
|
using static Vanara.PInvoke.Ole32;
|
2019-12-17 16:55:56 -05:00
|
|
|
|
|
2023-03-31 11:47:53 -04:00
|
|
|
|
namespace Vanara.PInvoke;
|
|
|
|
|
|
|
|
|
|
/// <summary>Items defined in DocumentSource.idl.</summary>
|
|
|
|
|
// https://docs.microsoft.com/en-us/windows/win32/api/documentsource/
|
|
|
|
|
public static partial class DocumentSource
|
2019-12-17 16:55:56 -05:00
|
|
|
|
{
|
2023-03-31 11:47:53 -04:00
|
|
|
|
/// <summary>Implemented by the app to provide access to the content to be printed.</summary>
|
|
|
|
|
[ComImport, Guid("a96bb1db-172e-4667-82b5-ad97a252318f"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
|
|
|
|
public interface IPrintDocumentPageSource
|
2019-12-17 16:55:56 -05:00
|
|
|
|
{
|
2023-03-31 11:47:53 -04:00
|
|
|
|
/// <summary>Requests that the document source creates a preview page collection for the document being printed.</summary>
|
|
|
|
|
/// <param name="docPackageTarget">A pointer to the package target.</param>
|
|
|
|
|
/// <param name="docPageCollection">A pointer to the destination for the preview images.</param>
|
|
|
|
|
/// <returns>
|
|
|
|
|
/// If the GetPreviewPageCollection method completes successfully, it returns an S_OK. Otherwise it returns an appropriate
|
|
|
|
|
/// HRESULT error code.
|
|
|
|
|
/// </returns>
|
|
|
|
|
/// <remarks>For details on how to extract and use GetPreviewPageCollection, see IPrintPreviewDxgiPackageTarget.</remarks>
|
|
|
|
|
[PreserveSig]
|
|
|
|
|
HRESULT GetPreviewPageCollection(IPrintDocumentPackageTarget docPackageTarget, out IPrintPreviewPageCollection docPageCollection);
|
2019-12-17 16:55:56 -05:00
|
|
|
|
|
2023-03-31 11:47:53 -04:00
|
|
|
|
/// <summary>Informs the app to create the document.</summary>
|
|
|
|
|
/// <param name="printTaskOptions">The print options.</param>
|
|
|
|
|
/// <param name="docPackageTarget">The packaged target types.</param>
|
|
|
|
|
/// <returns>
|
|
|
|
|
/// If the MakeDocument method completes successfully, it returns an S_OK. Otherwise it returns an appropriate HRESULT error code.
|
|
|
|
|
/// </returns>
|
|
|
|
|
[PreserveSig]
|
|
|
|
|
HRESULT MakeDocument(IInspectable printTaskOptions, IPrintDocumentPackageTarget docPackageTarget);
|
|
|
|
|
}
|
2019-12-17 16:55:56 -05:00
|
|
|
|
|
2023-03-31 11:47:53 -04:00
|
|
|
|
/// <summary>Implemented by the app to provide access to print preview pages.</summary>
|
|
|
|
|
[ComImport, Guid("0b31cc62-d7ec-4747-9d6e-f2537d870f2b"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
|
|
|
|
public interface IPrintPreviewPageCollection
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// This method is called whenever the system detects that the physical dimensions of the page has changed or when the app has
|
|
|
|
|
/// requested pagination via a call to IPrintPreviewDxgiPreviewTarget::InvalidatePreview.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="currentJobPage">The current page being displayed to the user.</param>
|
|
|
|
|
/// <param name="printTaskOptions">The print options.</param>
|
|
|
|
|
/// <returns>
|
|
|
|
|
/// If the Paginate method completes successfully, it returns an S_OK. Otherwise it returns an appropriate HRESULT error code.
|
|
|
|
|
/// </returns>
|
|
|
|
|
/// <remarks>
|
|
|
|
|
/// For standard options which result in changes to the physical layout of the page, the system will automatically generate a
|
|
|
|
|
/// Paginate call. The app does not need to call IPrintPreviewDxgiPackageTarget::InvalidatePreview in these scenarios; e.g.
|
|
|
|
|
/// portrait changed to landscape. For custom options such as handling greyscale and color, apps should call InvalidatePreview
|
|
|
|
|
/// to trigger a pagination.
|
|
|
|
|
/// <para><c>Note</c> A Pagination request does not have to require a new pagination to occur.</para>
|
|
|
|
|
/// <para>
|
|
|
|
|
/// Apps should examine the state of the provided printTaskOptions and determine if the changes warrant a repagination.For
|
|
|
|
|
/// example, if the imageable area changes and the content already fits within the new imageable area there is no need to
|
|
|
|
|
/// perform a new pagination.
|
|
|
|
|
/// </para>
|
|
|
|
|
/// <para>
|
|
|
|
|
/// An app may use the currentJobPage parameter to determine what page is visible if it wants to maintain user context when the
|
|
|
|
|
/// layout changes.For example, keeping the same content on the screen when orientation switches from portrait to landscape.
|
|
|
|
|
/// </para>
|
|
|
|
|
/// </remarks>
|
|
|
|
|
[PreserveSig]
|
|
|
|
|
HRESULT Paginate(uint currentJobPage, IInspectable printTaskOptions);
|
2019-12-17 16:55:56 -05:00
|
|
|
|
|
2023-03-31 11:47:53 -04:00
|
|
|
|
/// <summary>Provides the system with a new page to present in print preview.</summary>
|
|
|
|
|
/// <param name="desiredJobPage">The page number.</param>
|
|
|
|
|
/// <param name="width">The width of the page.</param>
|
|
|
|
|
/// <param name="height">The height of the page.</param>
|
|
|
|
|
/// <returns>
|
|
|
|
|
/// If the MakePage method completes successfully, it returns an S_OK. Otherwise it returns an appropriate HRESULT error code.
|
|
|
|
|
/// </returns>
|
|
|
|
|
/// <remarks>
|
|
|
|
|
/// Apps should not assume that the system will cache all retrieved pages. For example, the system may ask for page 1 again
|
|
|
|
|
/// without making a call to Paginate first. When the desiredJobPage is JOB_PAGE_APPLICATION_DEFINED the app may return the page
|
|
|
|
|
/// to be presented as the next preview page. The page number provided in the next call to
|
|
|
|
|
/// IPrintPreviewDxgiPackageTarget::MakePage will be used as the next page to show the user. When a specific page is requested
|
|
|
|
|
/// this is the page that is being requested by the preview experience and the app should respond with this page. Page counts
|
|
|
|
|
/// are 1-based and desiredJobPage is 1 when requesting the first page of the document.
|
|
|
|
|
/// </remarks>
|
|
|
|
|
[PreserveSig]
|
|
|
|
|
HRESULT MakePage(uint desiredJobPage, float width, float height);
|
2019-12-17 16:55:56 -05:00
|
|
|
|
}
|
|
|
|
|
}
|