Esempio n. 1
0
        /// <summary>
        /// Actually print an Xps Document with previously setup params
        /// </summary>
        /// <param name="paginator">Document to print</param>
        /// <param name="description">Description</param>
        public void PrintDocument(DocumentPaginator paginator, string description)
        {
            if (paginator == null)
            {
                throw new ArgumentNullException("paginator", "No DocumentPaginator to print");
            }

            VerifyPrintSettings();

            //Handle XPS ourself, as their document writer hates our thread
            if (mPrintQueue.FullName.Contains("XPS"))
            {
                SaveFileDialog sfd = new SaveFileDialog();
                sfd.Filter = "Xps Document (*.xps) | *.xps";

                if (sfd.ShowDialog() == true)
                {
                    XpsDocument             document         = new XpsDocument(sfd.FileName, System.IO.FileAccess.Write);
                    XpsPackagingPolicy      packagePolicy    = new XpsPackagingPolicy(document);
                    XpsSerializationManager serializationMgr = new XpsSerializationManager(packagePolicy, false);
                    serializationMgr.SaveAsXaml(paginator);

                    document.Close();
                }

                return;
            }

            XpsDocumentWriter writer = null;

            new PrintingPermission(PrintingPermissionLevel.DefaultPrinting).Assert();

            try
            {
                mPrintQueue.CurrentJobSettings.Description = description;
                writer = PrintQueue.CreateXpsDocumentWriter(mPrintQueue);

                TicketEventHandler handler = new TicketEventHandler(mPrintTicket);
                writer.WritingPrintTicketRequired += new WritingPrintTicketRequiredEventHandler(handler.SetPrintTicket);
            }
            finally
            {
                CodeAccessPermission.RevertAssert();
            }

            writer.Write(paginator);

            //Reset
            mPrintableWidth  = 0.0;
            mPrintableHeight = 0.0;
            mWidthUpdated    = false;
            mHeightUpdated   = false;
        }
Esempio n. 2
0
		/// <summary>
		/// Actually print an Xps Document with previously setup params
		/// </summary>
		/// <param name="paginator">Document to print</param>
		/// <param name="description">Description</param>
		public void PrintDocument(DocumentPaginator paginator, string description)
		{
			if (paginator == null)
				throw new ArgumentNullException("paginator", "No DocumentPaginator to print");

			VerifyPrintSettings();

			//Handle XPS ourself, as their document writer hates our thread
			if (mPrintQueue.FullName.Contains("XPS"))
			{
				SaveFileDialog sfd = new SaveFileDialog();
				sfd.Filter = "Xps Document (*.xps) | *.xps";

				if (sfd.ShowDialog() == true)
				{
					XpsDocument document = new XpsDocument(sfd.FileName, System.IO.FileAccess.Write);
					XpsPackagingPolicy packagePolicy = new XpsPackagingPolicy(document);
					XpsSerializationManager serializationMgr = new XpsSerializationManager(packagePolicy, false);
					serializationMgr.SaveAsXaml(paginator);

					document.Close();
				}

				return;
			}

			XpsDocumentWriter writer = null;
			new PrintingPermission(PrintingPermissionLevel.DefaultPrinting).Assert();

			try
			{
				mPrintQueue.CurrentJobSettings.Description = description;
				writer = PrintQueue.CreateXpsDocumentWriter(mPrintQueue);

				TicketEventHandler handler = new TicketEventHandler(mPrintTicket);
				writer.WritingPrintTicketRequired += new WritingPrintTicketRequiredEventHandler(handler.SetPrintTicket);
			}
			finally
			{
				CodeAccessPermission.RevertAssert();
			}

			writer.Write(paginator);

			//Reset
			mPrintableWidth = 0.0;
			mPrintableHeight = 0.0;
			mWidthUpdated = false;
			mHeightUpdated = false;
		}