Get and Set Print Options Example (C#)

This example shows how to get and set print options.

//--------------------------------------------------------------
// Preconditions:
// 1. Create a C# Windows console project.
// 2. Copy and paste this example into the C# IDE.
// 3. Add a reference to:
//    install_dir\APISDK\tlb\DraftSight.Interop.dsAutomation.dll.
// 4. Add references to System and System.Windows.Forms.
// 5. Start DraftSight and open a document.
// 6. Start debugging the project.
//
// Postconditions: Message boxes pop up if setting any printer
// option fails for the specified printer. Read the text in each
// message box before clicking OK to close it.
//----------------------------------------------------------------
using DraftSight.Interop.dsAutomation;
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
static class Module1
{
    public static void Main()
	{
		DraftSight.Interop.dsAutomation.Application dsApp;
		Document dsDoc = default(Document);
		//Connect to DraftSight
        	dsApp = (DraftSight.Interop.dsAutomation.Application)Marshal.GetActiveObject("DraftSight.Application");
		dsApp.AbortRunningCommand(); // abort any command currently running in DraftSight to avoid nested commands
		//Get active document
		dsDoc = (Document)dsApp.GetActiveDocument();
		if (dsDoc != null) 
                {
			//Get and set printing options
			GetSetPrintOptions(dsApp);
		}
	}
    public static void GetSetPrintOptions(DraftSight.Interop.dsAutomation.Application dsApp)
    {
        PrintManager dsPrintMgr = default(PrintManager);
        string printerName = null;
        object[] dsVarPaperSizes = null;
        double paperLength = 0;
        double paperWidth = 0;
        double rightLength = 0;
        double rightWidth = 0;
        string paperSize = null;
        double precision = 0;
        double xOffset = 0;
        double yOffset = 0;
        dsPrintOrientation_e printOrientation = default(dsPrintOrientation_e);
        bool centerPrint = false;
        int printQuality = 0;
        bool scaleLineWeight = false;
        bool scaleToFit = false;
        string styleTable = null;
        bool userScale = false;
        dsViewDisplayStyle_e viewDisplayStyle = default(dsViewDisplayStyle_e);
        //Get PrintManager
        dsPrintMgr = dsApp.GetPrintManager();
        if (dsPrintMgr != null)
        {
            //Get printer name
            printerName = "JPG";
            dsPrintMgr.Printer = printerName;
            if (string.IsNullOrEmpty(printerName))
            {
                MessageBox.Show("Failed to set IPrintManager.Printer property " + printerName + " value.");
            }
            //Get available paper sizes
            dsVarPaperSizes = (object[])dsPrintMgr.AvailablePaperSizes();
            if (dsVarPaperSizes == null)
            {
                MessageBox.Show("List of available paper sizes is empty for " + dsPrintMgr.Printer + " printer.");
            }
            //Set paper size to "UserDefinedRaster (87.00 x 134.00Pixels)"
            paperSize = "UserDefinedRaster (87.00 x 134.00Pixels)";
            dsPrintMgr.PaperSize = paperSize;
            if (paperSize != dsPrintMgr.PaperSize)
            {
                MessageBox.Show("Failed to set IPrintManager.PaperSize property to " + paperSize + " value.");
            }
            //Get paper size
            rightLength = 134;
            rightWidth = 87;
            dsPrintMgr.GetPaperSize(out paperLength, out paperWidth);
            //Verify paper length value
            precision = 1E-09;
            if (Math.Abs(rightLength - paperLength) > precision)
            {
                MessageBox.Show("IPrintManager.GetPaperSize method returns wrong paper length for '" + paperSize + "' paper size.");
            }
            //Verify paper width value
            if (Math.Abs(rightWidth - paperWidth) > precision)
            {
                MessageBox.Show("IPrintManager.GetPaperSize method returns wrong paper width for '" + paperSize + "' paper size.");
            }
            //Set paper size to "VGA_(640.00_x_480.00_Pixels)"
            paperSize = "VGA_(640.00_x_480.00_Pixels)";
            dsPrintMgr.PaperSize = paperSize;
            if (paperSize != dsPrintMgr.PaperSize)
            {
                MessageBox.Show("Failed to set IPrintManager.PaperSize property to " + paperSize + " value.");
            }
            //Get paper size
            rightLength = 480;
            rightWidth = 640;
            dsPrintMgr.GetPaperSize(out paperLength, out paperWidth);
            //Verify paper length value
            if (Math.Abs(rightLength - paperLength) > precision)
            {
                MessageBox.Show("IPrintManager.GetPaperSize method returns wrong paper length for '" + paperSize + "' paper size.");
            }
            //Verify paper width value
            if (Math.Abs(rightWidth - paperWidth) > precision)
            {
                MessageBox.Show("IPrintManager.GetPaperSize method returns wrong paper width for '" + paperSize + "' paper size.");
            }
            //Get print margins
            double top = 0;
            double bottom = 0;
            double left = 0;
            double right = 0;
            dsPrintMgr.GetPrintMargins(out top, out bottom, out left, out right);
            //Set print offset
            xOffset = 5.0;
            yOffset = 10.0;
            dsPrintMgr.SetPrintOffset(xOffset, yOffset);
            //Get print margins
            double resultXOffset = 0;
            double resultYOffset = 0;
            dsPrintMgr.GetPrintOffset(out resultXOffset, out resultYOffset);
            //Verify print offset values
            if (Math.Abs(resultXOffset - xOffset) > precision)
            {
                MessageBox.Show("IPrintManager.GetPrintOffset method returns wrong XOffset value. It should be " + xOffset + ", but it is " + resultXOffset + ".");
            }
            if (Math.Abs(resultYOffset - yOffset) > precision)
            {
                MessageBox.Show("IPrintManager.GetPrintOffset method returns wrong YOffset value. It should be " + yOffset + ", but it is " + resultYOffset + ".");
            }
            //Set print orientation
            printOrientation = dsPrintOrientation_e.dsPrintOrientation_Landscape;
            dsPrintMgr.Orientation = printOrientation;
            //Verify if print orientation was set
            if (printOrientation != dsPrintMgr.Orientation)
            {
                MessageBox.Show("Failed to set IPrintManager.Orientation property. It should be " + printOrientation + ", but it is " + dsPrintMgr.Orientation + ".");
            }
            //Set PrintOnCenter property
            centerPrint = false;
            dsPrintMgr.PrintOnCenter = centerPrint;
            if (centerPrint != dsPrintMgr.PrintOnCenter)
            {
                MessageBox.Show("Failed to set IPrintManager.PrintOnCenter property to " + centerPrint);
            }
            //Set print quality
            printQuality = 300;
            dsPrintMgr.Quality = printQuality;
            //Set ScaleLineWeight property
            scaleLineWeight = false;
            dsPrintMgr.ScaleLineWeight = scaleLineWeight;
            if (scaleLineWeight != dsPrintMgr.ScaleLineWeight)
            {
                MessageBox.Show("Failed to set IPrintManager.ScaleLineWeight property.");
            }
            //Set ScaleToFit property
            scaleToFit = false;
            dsPrintMgr.ScaleToFit = scaleToFit;
            if (scaleToFit != dsPrintMgr.ScaleToFit)
            {
                MessageBox.Show("Failed to set IPrintManager.ScaleToFit property to " + scaleToFit);
            }
            //Set StyleTable property
            styleTable = "default.ctb";
            dsPrintMgr.StyleTable = styleTable;
            if (styleTable != dsPrintMgr.StyleTable)
            {
                MessageBox.Show("Failed to set IPrintManager.StyleTable property to " + styleTable);
            }
            //Set UserScale property
            userScale = false;
            dsPrintMgr.UserScale = userScale;
            //Set ViewDisplayStyle property
            viewDisplayStyle = dsViewDisplayStyle_e.dsViewDisplayStyle_Rendered;
            dsPrintMgr.ViewDisplayStyle = viewDisplayStyle;
            if (viewDisplayStyle != dsPrintMgr.ViewDisplayStyle)
            {
                MessageBox.Show("Failed to set IPrintManager.ViewDisplayStyle property to " + viewDisplayStyle);
            }
        }
        else
        {
            MessageBox.Show("IDocument.GetPrintManager returns Nothing.");
        }
    }
}