Esempio n. 1
0
        internal static void PrintFlowDocument(PrintQueue pq, FlowDocument flowDocument)
        {
            if (pq == null)
            {
                throw new InvalidOperationException("Invalid Printer");
            }
            // Create a XpsDocumentWriter object, open a Windows common print dialog.
            // This methods returns a ref parameter that represents information about the dimensions of the printer media.
            XpsDocumentWriter docWriter = PrintQueue.CreateXpsDocumentWriter(pq);
            PageImageableArea ia        = pq.GetPrintCapabilities().PageImageableArea;
            PrintTicket       pt        = pq.UserPrintTicket;

            if (ia != null)
            {
                DocumentPaginator paginator = ((IDocumentPaginatorSource)flowDocument).DocumentPaginator;
                // Change the PageSize and PagePadding for the document to match the CanvasSize for the printer device.
                paginator.PageSize = new Size((double)pt.PageMediaSize.Width, (double)pt.PageMediaSize.Height);
                Thickness pagePadding = flowDocument.PagePadding;
                flowDocument.PagePadding = new Thickness(
                    Math.Max(ia.OriginWidth, pagePadding.Left),
                    Math.Max(ia.OriginHeight, pagePadding.Top),
                    Math.Max((double)pt.PageMediaSize.Width - (ia.OriginWidth + ia.ExtentWidth), pagePadding.Right),
                    Math.Max((double)pt.PageMediaSize.Height - (ia.OriginHeight + ia.ExtentHeight), pagePadding.Bottom));
                flowDocument.ColumnWidth = double.PositiveInfinity;
                flowDocument.FontFamily  = new System.Windows.Media.FontFamily(LocalSettings.PrintFontFamily);
                // Send DocumentPaginator to the printer.
                docWriter.Write(paginator);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// コンストラクタ
        /// 出来高を取得、印刷関連オブジェクトの設定をする
        /// </summary>
        /// <param name="Dekidaka">出来高データ</param>
        public PrintingTelop(Dekidaka_Data orgDekidaka)
        {
            Dekidaka = orgDekidaka; //出来高データの保持


            //プリンタの印刷範囲を取得する為に関連オブジェクトを作成する
            pq = null;
            Pt = null;

            //Settings.PrintDlg = new PrintDialog();

            //ローカルプリントサーバーから設定内容のプリンタキューと印刷設定チケットを取得する
            IsPrintSetting = GetPrinterSetting(ps, ref pq, ref Pt);


            //印刷可能範囲を計算して保持する
            PageImageableArea Pa = pq.GetPrintCapabilities().PageImageableArea;

            //double PageWidtha = Pa.OriginWidth +  Pa.ExtentWidth;
            //double PageHeighta = Pa.OriginHeight + Pa.ExtentHeight;
            PageWidth  = (double)Pt.PageMediaSize.Width - Pa.OriginWidth;
            PageHeight = (double)Pt.PageMediaSize.Height - Pa.OriginHeight;

            //MessageBox.Show("1 Width:" + PageWidth.ToString() + "  Height:" + PageHeight.ToString() +
            //                "\n2 Width:" + PageWidtha.ToString() + " Height:" + PageHeighta.ToString() +
            //                "\nO Width:" + Pa.OriginWidth.ToString() + " Height:" + Pa.OriginHeight.ToString() +
            //                "\nE Width:" + Pa.ExtentWidth.ToString() + " Height:" + Pa.ExtentHeight.ToString() +
            //                "\nP Width:" + Pt.PageMediaSize.Width.ToString() + " Height:" + Pt.PageMediaSize.Height.ToString());
        }
Esempio n. 3
0
        private static Rect GetImageableRect(PrintDialog dialog)
        {
            Rect empty = Rect.Empty;

            Invariant.Assert(dialog != null, "Dialog should not be null.");
            PrintCapabilities    printCapabilities    = null;
            CodeAccessPermission codeAccessPermission = SystemDrawingHelper.NewDefaultPrintingPermission();

            codeAccessPermission.Assert();
            try
            {
                PrintQueue printQueue = dialog.PrintQueue;
                if (printQueue != null)
                {
                    printCapabilities = printQueue.GetPrintCapabilities();
                }
            }
            finally
            {
                CodeAccessPermission.RevertAssert();
            }
            if (printCapabilities != null)
            {
                PageImageableArea pageImageableArea = printCapabilities.PageImageableArea;
                if (pageImageableArea != null)
                {
                    empty = new Rect(pageImageableArea.OriginWidth, pageImageableArea.OriginHeight, pageImageableArea.ExtentWidth, pageImageableArea.ExtentHeight);
                }
            }
            if (empty == Rect.Empty)
            {
                empty = new Rect(15.0, 15.0, dialog.PrintableAreaWidth, dialog.PrintableAreaHeight);
            }
            return(empty);
        }
    /// <summary>
    /// Set pate margins with minimal
    /// </summary>
    public void SetMinimalPageMargins()
    {
        PageImageableArea pia = TicketCapabilities.PageImageableArea;

        // Set minimal page margins to bypass the unprinted area.
        PageMargins = new Thickness(pia.OriginWidth, pia.OriginHeight,
                                    (double)TicketCapabilities.OrientedPageMediaWidth - -pia.OriginWidth - pia.ExtentWidth,
                                    (double)TicketCapabilities.OrientedPageMediaHeight - pia.OriginHeight - pia.ExtentHeight);
    }
    /// <summary>
    /// Set page margins and return true.
    /// <para/>
    /// If new page margins are too small (unprinted area) then set minimum and return false.
    /// </summary>
    public bool SetPageMargins(Thickness margins)
    {
        PageImageableArea pia = TicketCapabilities.PageImageableArea;

        PageMargins = new Thickness(Math.Max(margins.Left, pia.OriginWidth),
                                    Math.Max(margins.Top, pia.OriginHeight),
                                    Math.Max(margins.Right, PageSize.Width - pia.OriginWidth - pia.ExtentWidth),
                                    Math.Max(margins.Bottom, PageSize.Height - pia.OriginHeight - pia.ExtentHeight));
        return(PageMargins == margins);
    }
Esempio n. 6
0
        void preparePrintDialog()
        {
            // Set page orientation (and size) to landscape
            printDialog.PrintTicket.PageOrientation = PageOrientation.Landscape;
            double            width         = (double)printDialog.PrintTicket.PageMediaSize.Width;
            double            height        = (double)printDialog.PrintTicket.PageMediaSize.Height;
            double            mediaWidth    = Math.Max(width, height);
            double            mediaHeight   = Math.Min(width, height);
            PageMediaSizeName mediaSizeName = (PageMediaSizeName)printDialog.PrintTicket.PageMediaSize.PageMediaSizeName;

            printDialog.PrintTicket.PageMediaSize = new PageMediaSize(mediaSizeName, mediaWidth, mediaHeight);

            // Get printable area
            PrintCapabilities printCapabilities = printDialog.PrintQueue.GetPrintCapabilities(printDialog.PrintTicket);
            PageImageableArea pageImageableArea = printCapabilities.PageImageableArea;

            printWidth  = pageImageableArea.ExtentWidth;
            printHeight = pageImageableArea.ExtentHeight;
            printPosX   = pageImageableArea.OriginWidth;
            printPosY   = pageImageableArea.OriginHeight;

            printDpiX = (double)printDialog.PrintTicket.PageResolution.X;
            printDpiY = (double)printDialog.PrintTicket.PageResolution.Y;
        }