コード例 #1
0
ファイル: PrintBLL.cs プロジェクト: evazhch/printerFinal
        /// <summary>
        /// 设置打印格式
        /// </summary>
        /// <param name="printDialog">打印文档</param>
        /// <param name="pageSize">打印纸张大小 a4</param>
        /// <param name="pageOrientation">打印方向 竖向</param>
        public void SetPrintProperty(PrintDialog printDialog, PageMediaSizeName pageSize = PageMediaSizeName.ISOA4, PageOrientation pageOrientation = PageOrientation.Portrait)
        {
            var printTicket = printDialog.PrintTicket;

            printTicket.PageMediaSize   = new PageMediaSize(pageSize); //A4纸
            printTicket.PageOrientation = pageOrientation;             //默认竖向打印
        }
コード例 #2
0
        /// <summary>
        /// Sets page media size setting to a standard fixed media size name.
        /// </summary>
        /// <param name="value">the standard fixed media size name</param>
        /// <exception cref="ArgumentOutOfRangeException">
        /// "value" is not one of the standard <see cref="PageMediaSizeName"/>.
        /// </exception>
        /// <remarks>
        /// This function will also automatically set page media size setting to
        /// fixed width and height physical media dimensions defined by Print Schema for
        /// the standard fixed media size name.
        /// </remarks>
        public void SetFixedMediaSize(PageMediaSizeName value)
        {
            InternalSetFixedMediaSize(value, true, 0, 0, false);

            // automatically set the dimension for the standard media sizes
            for (int i = 0; i < PrintSchema.StdMediaSizeTable.Length; i++)
            {
                if (PrintSchema.StdMediaSizeTable[i].SizeValue == value)
                {
                    // Our internal table stores size width/height values in microns, so no need to
                    // do unit conversion.
                    if (PrintSchema.StdMediaSizeTable[i].SizeW != -1)
                    {
                        this[PrintSchemaTags.Keywords.PageMediaSizeKeys.MediaSizeWidth] =
                            PrintSchema.StdMediaSizeTable[i].SizeW;
                    }

                    if (PrintSchema.StdMediaSizeTable[i].SizeH != -1)
                    {
                        this[PrintSchemaTags.Keywords.PageMediaSizeKeys.MediaSizeHeight] =
                            PrintSchema.StdMediaSizeTable[i].SizeH;
                    }

                    break;
                }
            }
        }
コード例 #3
0
        /// <summary>
        /// 表示用の名称を取得する
        /// </summary>
        /// <param name="pageSize">this PageMediaSizeName</param>
        /// <returns>文字列</returns>
        public static string ToDisplayName(this PageMediaSizeName pageSize)
        {
            switch (pageSize)
            {
            case PageMediaSizeName.ISOA0: return("A0");

            case PageMediaSizeName.ISOA1: return("A1");

            case PageMediaSizeName.ISOA2: return("A2");

            case PageMediaSizeName.ISOA3: return("A3");

            case PageMediaSizeName.ISOA4: return("A4");

            case PageMediaSizeName.ISOA5: return("A5");

            case PageMediaSizeName.ISOA6: return("A6");

            case PageMediaSizeName.ISOA7: return("A7");

            case PageMediaSizeName.ISOA8: return("A8");

            case PageMediaSizeName.ISOA9: return("A9");

            case PageMediaSizeName.ISOA10: return("A10");

            case PageMediaSizeName.JISB0: return("B0");

            case PageMediaSizeName.JISB1: return("B1");

            case PageMediaSizeName.JISB2: return("B2");

            case PageMediaSizeName.JISB3: return("B3");

            case PageMediaSizeName.JISB4: return("B4");

            case PageMediaSizeName.JISB5: return("B5");

            case PageMediaSizeName.JISB6: return("B6");

            case PageMediaSizeName.JISB7: return("B7");

            case PageMediaSizeName.JISB8: return("B8");

            case PageMediaSizeName.JISB9: return("B9");

            case PageMediaSizeName.JISB10: return("B10");

            default:
                return(pageSize.ToString());
            }
        }
コード例 #4
0
ファイル: XPSprint.cs プロジェクト: cenx1/ghostpdl
        /* Set up the print ticket */
        private PrintTicket SetUpTicket(PrintQueue queue, Print printcontrol,
                                        FixedDocumentSequence fixdoc, bool tempfile)
        {
            PrintTicket Ticket = new PrintTicket();

            PageMediaSizeName name      = PaperKindToPageMediaSize(printcontrol.m_pagedetails.PaperSize.Kind);
            PageMediaSize     mediasize = new PageMediaSize(name, printcontrol.m_pagedetails.PaperSize.Width, printcontrol.m_pagedetails.PaperSize.Height);

            /* Media size */
            Ticket.PageMediaSize = mediasize;
            /* Scale to fit */
            Ticket.PageScalingFactor = (int)Math.Round(printcontrol.m_page_scale * 100.0);

            System.Windows.Size page_size = new System.Windows.Size(mediasize.Width.Value, mediasize.Height.Value);
            DocumentPaginator   paginator = fixdoc.DocumentPaginator;

            paginator.PageSize = page_size;

            /* Copy Count */
            Ticket.CopyCount = printcontrol.m_numcopies;

            if (printcontrol.m_pagedetails.Landscape)
            {
                Ticket.PageOrientation = PageOrientation.Landscape;
            }
            else
            {
                Ticket.PageOrientation = PageOrientation.Portrait;
            }

            /* Orientation. If we had a tempfile, then gs did a conversion
             * and adjusted everything for us.  Other wise we may need to
             * rotate the document if it was xps to start with. */
            if (printcontrol.m_isrotated && !tempfile)
            {
                if (printcontrol.m_pagedetails.Landscape)
                {
                    Ticket.PageOrientation = PageOrientation.Portrait;
                }
                else
                {
                    Ticket.PageOrientation = PageOrientation.Landscape;
                }
            }

            System.Printing.ValidationResult result = queue.MergeAndValidatePrintTicket(queue.UserPrintTicket, Ticket);
            queue.UserPrintTicket = result.ValidatedPrintTicket;
            queue.Commit();
            return(result.ValidatedPrintTicket);
        }
コード例 #5
0
        private void UpdatePageSizes(Printer printer)
        {
            List <PageSize> pageSizes = new List <PageSize>();

            PageMediaSizeName?selectedName     = ((PageSize)PageSizeCombo.SelectedItem)?.PageMediaSizeName;
            PageSize          selectedPageSize = null;
            PageMediaSizeName defaultName      = PageMediaSizeName.ISOA4;
            PageSize          defaultPageSize  = null;

            foreach (PageMediaSize pageMediaSize in printer.PageMediaSizeCapability)
            {
                PageSize pageSize = new PageSize(pageMediaSize);
                pageSizes.Add(pageSize);
                if (pageSize.PageMediaSizeName == selectedName)
                {
                    selectedPageSize = pageSize;
                }
                if (pageSize.PageMediaSizeName == defaultName)
                {
                    defaultPageSize = pageSize;
                }
            }

            pageSizes.Sort();

            PageSizeCombo.ItemsSource = pageSizes;

            PageSizeCombo.SelectionChanged -= PageSizeCombo_SelectionChanged;
            PageSizeCombo.SelectionChanged += PageSizeCombo_SelectionChanged;

            if (selectedPageSize != null)
            {
                PageSizeCombo.SelectedItem = selectedPageSize;
            }
            else if (defaultPageSize != null)
            {
                PageSizeCombo.SelectedItem = defaultPageSize;
            }
            else
            {
                PageSizeCombo.SelectedIndex = 0;
            }
        }
コード例 #6
0
        /// <exception cref="ArgumentOutOfRangeException">
        /// "value" is not one of the standard <see cref="PageMediaSizeName"/>.
        /// </exception>
        /// <exception cref="ArgumentOutOfRangeException">
        /// Either "mediaSizeWidth" or "mediaSizeHeight" is not a positive dimension value.
        /// </exception>
        private void InternalSetFixedMediaSize(PageMediaSizeName value,
                                               bool bSetValue,
                                               double mediaSizeWidth,
                                               double mediaSizeHeight,
                                               bool bSetWH)
        {
            if (bSetValue)
            {
                if (value < PrintSchema.PageMediaSizeNameEnumMin ||
                    value > PrintSchema.PageMediaSizeNameEnumMax)
                {
                    throw new ArgumentOutOfRangeException("value");
                }
            }

            if (bSetWH)
            {
                if ((mediaSizeWidth <= 0) || (mediaSizeHeight <= 0))
                {
                    throw new ArgumentOutOfRangeException((mediaSizeWidth <= 0) ? "mediaSizeWidth" : "mediaSizeHeight",
                                                          PTUtility.GetTextFromResource("ArgumentException.PositiveValue"));
                }
            }

            // Remove all XML content related to PageMediaSize feature
            ClearSetting();

            if (bSetValue)
            {
                this[PrintSchemaTags.Framework.OptionNameProperty] = (int)value;
            }

            if (bSetWH)
            {
                this[PrintSchemaTags.Keywords.PageMediaSizeKeys.MediaSizeWidth] =
                    UnitConverter.LengthValueFromDIPToMicron(mediaSizeWidth);
                this[PrintSchemaTags.Keywords.PageMediaSizeKeys.MediaSizeHeight] =
                    UnitConverter.LengthValueFromDIPToMicron(mediaSizeHeight);
            }
        }
コード例 #7
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;
        }
コード例 #8
0
 /// <summary>
 /// Sets page media size setting to a standard fixed media size name and
 /// to fixed width and height physical media dimensions.
 /// </summary>
 /// <param name="value">the standard fixed media size name</param>
 /// <param name="mediaSizeWidth">physical media dimension in the width direction, in 1/96 inch unit</param>
 /// <param name="mediaSizeHeight">physical media dimension in the height direction, in 1/96 inch unit</param>
 /// <exception cref="ArgumentOutOfRangeException">
 /// "value" is not one of the standard <see cref="PageMediaSizeName"/>.
 /// </exception>
 /// <exception cref="ArgumentOutOfRangeException">
 /// Either "mediaSizeWidth" or "mediaSizeHeight" is not a positive dimension value.
 /// </exception>
 public void SetFixedMediaSize(PageMediaSizeName value,
                               double mediaSizeWidth,
                               double mediaSizeHeight)
 {
     InternalSetFixedMediaSize(value, true, mediaSizeWidth, mediaSizeHeight, true);
 }
        bool TryGetPaperSize(PageMediaSizeName pageMediaSizeName, out short value)
        {
            bool result = false;

            value = unchecked ((short)0xFFFFFFFF);

            switch (pageMediaSizeName)
            {
            case PageMediaSizeName.BusinessCard: break;

            case PageMediaSizeName.CreditCard: break;

            case PageMediaSizeName.ISOA0: break;

            case PageMediaSizeName.ISOA1: break;

            case PageMediaSizeName.ISOA10: break;

            case PageMediaSizeName.ISOA2: break;

            case PageMediaSizeName.ISOA3: { result = true; value = DevModePaperSizes.DMPAPER_A3; break; }

            case PageMediaSizeName.ISOA3Extra: break;

            case PageMediaSizeName.ISOA3Rotated: { result = true; value = DevModePaperSizes.DMPAPER_A3_ROTATED; break; }

            case PageMediaSizeName.ISOA4: { result = true; value = DevModePaperSizes.DMPAPER_A4; break; }

            case PageMediaSizeName.ISOA4Extra: break;

            case PageMediaSizeName.ISOA4Rotated: { result = true; value = DevModePaperSizes.DMPAPER_A4_ROTATED; break; }

            case PageMediaSizeName.ISOA5: { result = true; value = DevModePaperSizes.DMPAPER_A5; break; }

            case PageMediaSizeName.ISOA5Extra: break;

            case PageMediaSizeName.ISOA5Rotated: { result = true; value = DevModePaperSizes.DMPAPER_A5_ROTATED; break; }

            case PageMediaSizeName.ISOA6: { result = true; value = DevModePaperSizes.DMPAPER_A6; break; }

            case PageMediaSizeName.ISOA6Rotated: { result = true; value = DevModePaperSizes.DMPAPER_A6_ROTATED; break; }

            case PageMediaSizeName.ISOA7: break;

            case PageMediaSizeName.ISOA8: break;

            case PageMediaSizeName.ISOA9: break;

            case PageMediaSizeName.ISOB0: break;

            case PageMediaSizeName.ISOB1: break;

            case PageMediaSizeName.ISOB10: break;

            case PageMediaSizeName.ISOB2: break;

            case PageMediaSizeName.ISOB3: break;

            case PageMediaSizeName.ISOB4: { result = true; value = DevModePaperSizes.DMPAPER_B4; break; }             // verify may be JISB4

            case PageMediaSizeName.ISOB4Envelope: { result = true; value = DevModePaperSizes.DMPAPER_ENV_B4; break; } //verify may be JIS

            case PageMediaSizeName.ISOB5Envelope: { result = true; value = DevModePaperSizes.DMPAPER_ENV_B5; break; } //verify may be JIS

            case PageMediaSizeName.ISOB5Extra: break;

            case PageMediaSizeName.ISOB7: break;

            case PageMediaSizeName.ISOB8: break;

            case PageMediaSizeName.ISOB9: break;

            case PageMediaSizeName.ISOC0: break;

            case PageMediaSizeName.ISOC1: break;

            case PageMediaSizeName.ISOC10: break;

            case PageMediaSizeName.ISOC2: break;

            case PageMediaSizeName.ISOC3: break;

            case PageMediaSizeName.ISOC3Envelope: { result = true; value = DevModePaperSizes.DMPAPER_ENV_C3; break; }

            case PageMediaSizeName.ISOC4: break;

            case PageMediaSizeName.ISOC4Envelope: { result = true; value = DevModePaperSizes.DMPAPER_ENV_C4; break; }

            case PageMediaSizeName.ISOC5: break;

            case PageMediaSizeName.ISOC5Envelope: { result = true; value = DevModePaperSizes.DMPAPER_ENV_C5; break; }

            case PageMediaSizeName.ISOC6: break;

            case PageMediaSizeName.ISOC6C5Envelope: { result = true; value = DevModePaperSizes.DMPAPER_ENV_C65; break; }

            case PageMediaSizeName.ISOC6Envelope: { result = true; value = DevModePaperSizes.DMPAPER_ENV_C6; break; }

            case PageMediaSizeName.ISOC7: break;

            case PageMediaSizeName.ISOC8: break;

            case PageMediaSizeName.ISOC9: break;

            case PageMediaSizeName.ISODLEnvelope: break;

            case PageMediaSizeName.ISODLEnvelopeRotated: break;

            case PageMediaSizeName.ISOSRA3: break;

            case PageMediaSizeName.Japan2LPhoto: break;

            case PageMediaSizeName.JapanChou3Envelope: { result = true; value = DevModePaperSizes.DMPAPER_JENV_CHOU3; break; }

            case PageMediaSizeName.JapanChou3EnvelopeRotated: { result = true; value = DevModePaperSizes.DMPAPER_JENV_CHOU3_ROTATED; break; }

            case PageMediaSizeName.JapanChou4Envelope: { result = true; value = DevModePaperSizes.DMPAPER_JENV_CHOU4; break; }

            case PageMediaSizeName.JapanChou4EnvelopeRotated: { result = true; value = DevModePaperSizes.DMPAPER_JENV_CHOU4_ROTATED; break; }

            case PageMediaSizeName.JapanDoubleHagakiPostcard: { result = true; value = DevModePaperSizes.DMPAPER_DBL_JAPANESE_POSTCARD; break; }

            case PageMediaSizeName.JapanDoubleHagakiPostcardRotated: { result = true; value = DevModePaperSizes.DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED; break; }

            case PageMediaSizeName.JapanHagakiPostcard: break;

            case PageMediaSizeName.JapanHagakiPostcardRotated: { result = true; value = DevModePaperSizes.DMPAPER_JAPANESE_POSTCARD_ROTATED; break; }

            case PageMediaSizeName.JapanKaku2Envelope: { result = true; value = DevModePaperSizes.DMPAPER_JENV_KAKU2; break; }

            case PageMediaSizeName.JapanKaku2EnvelopeRotated: { result = true; value = DevModePaperSizes.DMPAPER_JENV_KAKU2_ROTATED; break; }

            case PageMediaSizeName.JapanKaku3Envelope: { result = true; value = DevModePaperSizes.DMPAPER_JENV_KAKU3; break; }

            case PageMediaSizeName.JapanKaku3EnvelopeRotated: { result = true; value = DevModePaperSizes.DMPAPER_JENV_KAKU3_ROTATED; break; }

            case PageMediaSizeName.JapanLPhoto: break;

            case PageMediaSizeName.JapanQuadrupleHagakiPostcard: break;

            case PageMediaSizeName.JapanYou1Envelope: break;

            case PageMediaSizeName.JapanYou2Envelope: break;

            case PageMediaSizeName.JapanYou3Envelope: break;

            case PageMediaSizeName.JapanYou4Envelope: { result = true; value = DevModePaperSizes.DMPAPER_JENV_YOU4; break; }

            case PageMediaSizeName.JapanYou4EnvelopeRotated: { result = true; value = DevModePaperSizes.DMPAPER_JENV_YOU4_ROTATED; break; }

            case PageMediaSizeName.JapanYou6Envelope: break;

            case PageMediaSizeName.JapanYou6EnvelopeRotated: break;

            case PageMediaSizeName.JISB0: break;

            case PageMediaSizeName.JISB1: break;

            case PageMediaSizeName.JISB10: break;

            case PageMediaSizeName.JISB2: break;

            case PageMediaSizeName.JISB3: break;

            case PageMediaSizeName.JISB4: { result = true; value = DevModePaperSizes.DMPAPER_B4; break; }     // verify may be ISO

            case PageMediaSizeName.JISB4Rotated: { result = true; value = DevModePaperSizes.DMPAPER_B4_JIS_ROTATED; break; }

            case PageMediaSizeName.JISB5: { result = true; value = DevModePaperSizes.DMPAPER_B5; break; }     // verify may be ISO

            case PageMediaSizeName.JISB5Rotated: { result = true; value = DevModePaperSizes.DMPAPER_B5_JIS_ROTATED; break; }

            case PageMediaSizeName.JISB6: { result = true; value = DevModePaperSizes.DMPAPER_B6_JIS; break; }

            case PageMediaSizeName.JISB6Rotated: { result = true; value = DevModePaperSizes.DMPAPER_B6_JIS_ROTATED; break; }

            case PageMediaSizeName.JISB7: break;

            case PageMediaSizeName.JISB8: break;

            case PageMediaSizeName.JISB9: break;

            case PageMediaSizeName.NorthAmerica10x11: break;

            case PageMediaSizeName.NorthAmerica10x12: break;

            case PageMediaSizeName.NorthAmerica10x14: { result = true; value = DevModePaperSizes.DMPAPER_10X14; break; }

            case PageMediaSizeName.NorthAmerica11x17: { result = true; value = DevModePaperSizes.DMPAPER_11X17; break; }

            case PageMediaSizeName.NorthAmerica14x17: break;

            case PageMediaSizeName.NorthAmerica4x6: break;

            case PageMediaSizeName.NorthAmerica4x8: break;

            case PageMediaSizeName.NorthAmerica5x7: break;

            case PageMediaSizeName.NorthAmerica8x10: break;

            case PageMediaSizeName.NorthAmerica9x11: break;

            case PageMediaSizeName.NorthAmericaArchitectureASheet: break;

            case PageMediaSizeName.NorthAmericaArchitectureBSheet: break;

            case PageMediaSizeName.NorthAmericaArchitectureCSheet: break;

            case PageMediaSizeName.NorthAmericaArchitectureDSheet: break;

            case PageMediaSizeName.NorthAmericaArchitectureESheet: break;

            case PageMediaSizeName.NorthAmericaCSheet: { result = true; value = DevModePaperSizes.DMPAPER_CSHEET; break; }

            case PageMediaSizeName.NorthAmericaDSheet: { result = true; value = DevModePaperSizes.DMPAPER_DSHEET; break; }

            case PageMediaSizeName.NorthAmericaESheet: { result = true; value = DevModePaperSizes.DMPAPER_ESHEET; break; }

            case PageMediaSizeName.NorthAmericaExecutive: { result = true; value = DevModePaperSizes.DMPAPER_EXECUTIVE; break; }

            case PageMediaSizeName.NorthAmericaGermanLegalFanfold: { result = true; value = DevModePaperSizes.DMPAPER_FANFOLD_LGL_GERMAN; break; }

            case PageMediaSizeName.NorthAmericaGermanStandardFanfold: { result = true; value = DevModePaperSizes.DMPAPER_FANFOLD_STD_GERMAN; break; }

            case PageMediaSizeName.NorthAmericaLegal: break;

            case PageMediaSizeName.NorthAmericaLegalExtra: break;

            case PageMediaSizeName.NorthAmericaLetter: { result = true; value = DevModePaperSizes.DMPAPER_LETTER; break; }

            case PageMediaSizeName.NorthAmericaLetterExtra: break;

            case PageMediaSizeName.NorthAmericaLetterPlus: break;

            case PageMediaSizeName.NorthAmericaLetterRotated: { result = true; value = DevModePaperSizes.DMPAPER_LETTER_ROTATED; break; }

            case PageMediaSizeName.NorthAmericaMonarchEnvelope: break;

            case PageMediaSizeName.NorthAmericaNote: { result = true; value = DevModePaperSizes.DMPAPER_NOTE; break; }

            case PageMediaSizeName.NorthAmericaNumber10Envelope: { result = true; value = DevModePaperSizes.DMPAPER_ENV_10; break; }

            case PageMediaSizeName.NorthAmericaNumber10EnvelopeRotated: break;

            case PageMediaSizeName.NorthAmericaNumber11Envelope: { result = true; value = DevModePaperSizes.DMPAPER_ENV_11; break; }

            case PageMediaSizeName.NorthAmericaNumber12Envelope: { result = true; value = DevModePaperSizes.DMPAPER_ENV_12; break; }

            case PageMediaSizeName.NorthAmericaNumber14Envelope: { result = true; value = DevModePaperSizes.DMPAPER_ENV_14; break; }

            case PageMediaSizeName.NorthAmericaNumber9Envelope: { result = true; value = DevModePaperSizes.DMPAPER_ENV_9; break; }

            case PageMediaSizeName.NorthAmericaPersonalEnvelope: { result = true; value = DevModePaperSizes.DMPAPER_ENV_PERSONAL; break; };

            case PageMediaSizeName.NorthAmericaQuarto: { result = true; value = DevModePaperSizes.DMPAPER_QUARTO; break; }

            case PageMediaSizeName.NorthAmericaStatement: { result = true; value = DevModePaperSizes.DMPAPER_STATEMENT; break; }

            case PageMediaSizeName.NorthAmericaSuperA: break;

            case PageMediaSizeName.NorthAmericaSuperB: break;

            case PageMediaSizeName.NorthAmericaTabloid: { result = true; value = DevModePaperSizes.DMPAPER_TABLOID; break; }

            case PageMediaSizeName.NorthAmericaTabloidExtra: break;

            case PageMediaSizeName.OtherMetricA3Plus: break;

            case PageMediaSizeName.OtherMetricA4Plus: break;

            case PageMediaSizeName.OtherMetricFolio: { result = true; value = DevModePaperSizes.DMPAPER_FOLIO; break; }

            case PageMediaSizeName.OtherMetricInviteEnvelope: break;

            case PageMediaSizeName.OtherMetricItalianEnvelope: { result = true; value = DevModePaperSizes.DMPAPER_ENV_ITALY; break; }

            case PageMediaSizeName.PRC10Envelope: { result = true; value = DevModePaperSizes.DMPAPER_PENV_10; break; }

            case PageMediaSizeName.PRC10EnvelopeRotated: { result = true; value = DevModePaperSizes.DMPAPER_PENV_10_ROTATED; break; }

            case PageMediaSizeName.PRC16K: { result = true; value = DevModePaperSizes.DMPAPER_P16K; break; }

            case PageMediaSizeName.PRC16KRotated: { result = true; value = DevModePaperSizes.DMPAPER_P16K_ROTATED; break; }

            case PageMediaSizeName.PRC1Envelope: { result = true; value = DevModePaperSizes.DMPAPER_PENV_1; break; }

            case PageMediaSizeName.PRC1EnvelopeRotated: { result = true; value = DevModePaperSizes.DMPAPER_PENV_1_ROTATED; break; }

            case PageMediaSizeName.PRC2Envelope: { result = true; value = DevModePaperSizes.DMPAPER_PENV_2; break; }

            case PageMediaSizeName.PRC2EnvelopeRotated: { result = true; value = DevModePaperSizes.DMPAPER_PENV_2_ROTATED; break; }

            case PageMediaSizeName.PRC32K: { result = true; value = DevModePaperSizes.DMPAPER_P32K; break; }

            case PageMediaSizeName.PRC32KBig: { result = true; value = DevModePaperSizes.DMPAPER_P32KBIG; break; }

            case PageMediaSizeName.PRC32KRotated: { result = true; value = DevModePaperSizes.DMPAPER_P32KBIG_ROTATED; break; }

            case PageMediaSizeName.PRC3Envelope: { result = true; value = DevModePaperSizes.DMPAPER_PENV_3; break; }

            case PageMediaSizeName.PRC3EnvelopeRotated: { result = true; value = DevModePaperSizes.DMPAPER_PENV_3_ROTATED; break; }

            case PageMediaSizeName.PRC4Envelope: { result = true; value = DevModePaperSizes.DMPAPER_PENV_4; break; }

            case PageMediaSizeName.PRC4EnvelopeRotated: { result = true; value = DevModePaperSizes.DMPAPER_PENV_4_ROTATED; break; }

            case PageMediaSizeName.PRC5Envelope: { result = true; value = DevModePaperSizes.DMPAPER_PENV_5; break; }

            case PageMediaSizeName.PRC5EnvelopeRotated: { result = true; value = DevModePaperSizes.DMPAPER_PENV_5_ROTATED; break; }

            case PageMediaSizeName.PRC6Envelope: { result = true; value = DevModePaperSizes.DMPAPER_PENV_6; break; }

            case PageMediaSizeName.PRC6EnvelopeRotated: { result = true; value = DevModePaperSizes.DMPAPER_PENV_6_ROTATED; break; }

            case PageMediaSizeName.PRC7Envelope: { result = true; value = DevModePaperSizes.DMPAPER_PENV_7; break; }

            case PageMediaSizeName.PRC7EnvelopeRotated: { result = true; value = DevModePaperSizes.DMPAPER_PENV_7_ROTATED; break; }

            case PageMediaSizeName.PRC8Envelope: { result = true; value = DevModePaperSizes.DMPAPER_PENV_8; break; }

            case PageMediaSizeName.PRC8EnvelopeRotated: { result = true; value = DevModePaperSizes.DMPAPER_PENV_8_ROTATED; break; }

            case PageMediaSizeName.PRC9Envelope: { result = true; value = DevModePaperSizes.DMPAPER_PENV_9; break; }

            case PageMediaSizeName.PRC9EnvelopeRotated: { result = true; value = DevModePaperSizes.DMPAPER_PENV_9_ROTATED; break; }

            case PageMediaSizeName.Roll04Inch: break;

            case PageMediaSizeName.Roll06Inch: break;

            case PageMediaSizeName.Roll08Inch: break;

            case PageMediaSizeName.Roll12Inch: break;

            case PageMediaSizeName.Roll15Inch: break;

            case PageMediaSizeName.Roll18Inch: break;

            case PageMediaSizeName.Roll22Inch: break;

            case PageMediaSizeName.Roll24Inch: break;

            case PageMediaSizeName.Roll30Inch: break;

            case PageMediaSizeName.Roll36Inch: break;

            case PageMediaSizeName.Roll54Inch: break;
            }

            return(result);
        }
コード例 #10
0
        /// <summary>
        /// 打印方法
        /// </summary>
        /// <param name="ViewContainer">需要打印的控件</param>
        /// <param name="pageOrientation">打印方向,通过枚举类型 System.Printing.PageOrientation选择需要打印的方式</param>
        public static void Print(FrameworkElement ViewContainer, PageOrientation pageOrientation = PageOrientation.Portrait, PageMediaSizeName pageMediaSizeName = PageMediaSizeName.ISOA4)
        {
            if (ViewContainer is Canvas)
            {
                throw new Exception("该方法不支持 Canvas 类型控件打印");
            }

            FrameworkElement objectToPrint = ViewContainer as FrameworkElement;
            double           obj_Width     = objectToPrint.ActualWidth;
            double           obj_Heigh     = objectToPrint.ActualHeight;

            if (pageOrientation == PageOrientation.Portrait)
            {
                a4Width  = 761.5;
                a4Height = 1084.7;
            }
            else if (pageOrientation == PageOrientation.Landscape)
            {
                a4Width  = 1084.7; //后续修改 自动获取
                a4Height = 761.5;  //后续修改 自动获取
            }

            RenderTargetBitmap bmp = null;

            System.Drawing.Bitmap bmp2            = null;
            PageContent           lastPageContent = null;
            FixedDocument         document        = new FixedDocument();
            PrintDialog           printDialog     = new PrintDialog();
            bool isDoPrint = false;

            try
            {
                printDialog.PrintTicket.PageOrientation = pageOrientation;
                printDialog.PrintTicket.PageMediaSize   = new PageMediaSize(pageMediaSizeName);

                if ((bool)printDialog.ShowDialog().GetValueOrDefault())
                {
                    isDoPrint            = true;
                    Mouse.OverrideCursor = Cursors.Wait;

                    double dpiScale = 300.0 / 96.0;


                    try
                    {
                        Size size = new Size(a4Width > objectToPrint.ActualWidth ? objectToPrint.ActualWidth : a4Width,
                                             a4Height > objectToPrint.ActualHeight ? a4Height : objectToPrint.ActualHeight);
                        objectToPrint.Measure(size);
                        objectToPrint.Arrange(new Rect(size));

                        double left = a4Width > objectToPrint.ActualWidth ?
                                      (a4Width - objectToPrint.ActualWidth) * 0.5 : 20;

                        // Convert the UI control into a bitmap at 300 dpi
                        double dpiX = 300;

                        double dpiY = 300;

                        bmp = new RenderTargetBitmap(Convert.ToInt32(

                                                         a4Width * dpiScale),

                                                     Convert.ToInt32(objectToPrint.ActualHeight * dpiScale),

                                                     dpiX, dpiY, PixelFormats.Pbgra32);

                        bmp.Render(objectToPrint);
                        bmp.Freeze();
                        // Convert the RenderTargetBitmap into a bitmap we can more readily use

                        PngBitmapEncoder png = new PngBitmapEncoder();

                        png.Frames.Add(BitmapFrame.Create(bmp));


                        using (MemoryStream memoryStream = new MemoryStream())
                        {
                            png.Save(memoryStream);

                            bmp2 = new System.Drawing.Bitmap(memoryStream);
                        }

                        document.DocumentPaginator.PageSize = new Size(printDialog.PrintableAreaWidth, printDialog.PrintableAreaHeight);

                        // break the bitmap down into pages

                        int pageBreak         = 0;
                        int previousPageBreak = 0;
                        int temp       = 0;
                        int pageHeight =

                            Convert.ToInt32(a4Height * dpiScale);

                        while (pageBreak < bmp2.Height - pageHeight)
                        {
                            pageBreak += pageHeight - 250;  // Where we thing the end of the page should be
                            temp       = pageBreak;
                            // Keep moving up a row until we find a good place to break the page

                            while (!IsRowGoodBreakingPoint(bmp2, pageBreak))
                            {
                                pageBreak--;
                                if (pageBreak == previousPageBreak)
                                {
                                    pageBreak = temp;
                                    break;
                                }
                            }

                            var pageContent = GeneratePageContent(
                                bmp2,
                                previousPageBreak == 0 ? 0 : previousPageBreak - 3,
                                pageBreak + 3,
                                document.DocumentPaginator.PageSize.Width,
                                document.DocumentPaginator.PageSize.Height,
                                new Size(a4Width, a4Height),
                                left);
                            document.Pages.Add(pageContent);
                            previousPageBreak = pageBreak;
                        }

                        // Last Page

                        lastPageContent = GeneratePageContent(bmp2, previousPageBreak == 0 ? 0 : previousPageBreak - 3,

                                                              bmp2.Height, document.DocumentPaginator.PageSize.Width,

                                                              document.DocumentPaginator.PageSize.Height, new Size(a4Width, a4Height), left);

                        document.Pages.Add(lastPageContent);
                        printDialog.PrintDocument(document.DocumentPaginator, "Print Document Name");
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                    finally
                    {
                        //Scale UI control back to the original so we don't effect what is on the screen
                        Size size = new Size(obj_Width, obj_Heigh);
                        objectToPrint.Measure(size);
                        objectToPrint.Arrange(new Rect(size));
                        Mouse.OverrideCursor = null;
                    }
                }
            }
            catch (Exception ex)
            {
                //MessageBox.Show("打印过程中出错,错误描述为:" + ex.Message, "打印", MessageBoxButton.OK, MessageBoxImage.Information);
                Console.WriteLine(ex.ToString());

                //try
                //{
                //    if (ex is OutOfMemoryException && isDoPrint)
                //    {
                //        printDialog.PrintVisual(ViewContainer, "打印");
                //        return;
                //    }
                //}
                //catch (Exception e)
                //{

                //}

                string msg = "系统检测到您的打印机状态不正常(可能您在使用其他软件时能正常打印),建议重新安装打印机驱动!\n点击“确定”按钮,将导出XPS文档,您可自行打印。\n异常信息为:" + ex.Message;
                if (MessageBox.Show(msg, "打印", MessageBoxButton.OKCancel, MessageBoxImage.Question) == MessageBoxResult.OK)
                {
                    SaveAsXps(objectToPrint);
                }
            }
            finally
            {
                try
                {
                    printDialog = null;

                    if (bmp != null)
                    {
                        bmp.Clear();
                        bmp = null;
                    }
                    if (document != null)
                    {
                        foreach (var fixedPage in document.Pages.Select(pageContent => pageContent.Child))
                        {
                            fixedPage.Children.Clear();
                        }
                    }
                    lastPageContent = null;

                    if (bmp2 != null)
                    {
                        bmp2.Dispose();
                    }
                    document = null;
                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                    //GC.Collect();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
            }
        }
コード例 #11
0
        /// <summary>
        /// 打印方法
        /// </summary>
        /// <param name="ViewContainer">需要打印的控件</param>
        /// <param name="pageOrientation">打印方向,通过枚举类型 System.Printing.PageOrientation选择需要打印的方式</param>
        public static bool Print(PrintDialog printDialog, List <FrameworkElement> ViewContainers, PageOrientation pageOrientation = PageOrientation.Portrait, PageMediaSizeName pageMediaSizeName = PageMediaSizeName.ISOA4)
        {
            if (pageOrientation == PageOrientation.Portrait)
            {
                a4Width  = 761.5;
                a4Height = 1084.7;
            }
            else if (pageOrientation == PageOrientation.Landscape)
            {
                a4Width  = 1084.7; //后续修改 自动获取
                a4Height = 761.5;  //后续修改 自动获取
            }

            RenderTargetBitmap bmp = null;

            System.Drawing.Bitmap bmp2            = null;
            PageContent           lastPageContent = null;
            FixedDocument         document        = new FixedDocument();

            try
            {
                printDialog.PrintTicket.PageOrientation = pageOrientation;
                printDialog.PrintTicket.PageMediaSize   = new PageMediaSize(pageMediaSizeName);

                Mouse.OverrideCursor = Cursors.Wait;

                double dpiScale = 300.0 / 96.0;

                try
                {
                    foreach (FrameworkElement objectToPrint in ViewContainers)
                    {
                        Size size = new Size(a4Width > objectToPrint.ActualWidth ? objectToPrint.ActualWidth : a4Width,
                                             a4Height > objectToPrint.ActualHeight ? a4Height : objectToPrint.ActualHeight);
                        objectToPrint.Measure(size);
                        objectToPrint.Arrange(new Rect(size));

                        double left = a4Width > objectToPrint.ActualWidth ?
                                      (a4Width - objectToPrint.ActualWidth) * 0.5 : 20;

                        // Convert the UI control into a bitmap at 300 dpi
                        double dpiX = 300;

                        double dpiY = 300;

                        bmp = new RenderTargetBitmap(Convert.ToInt32(
                                                         a4Width * dpiScale),
                                                     Convert.ToInt32(objectToPrint.ActualHeight * dpiScale),
                                                     dpiX, dpiY, PixelFormats.Pbgra32);

                        bmp.Render(objectToPrint);
                        bmp.Freeze();
                        // Convert the RenderTargetBitmap into a bitmap we can more readily use
                        PngBitmapEncoder png = new PngBitmapEncoder();
                        png.Frames.Add(BitmapFrame.Create(bmp));

                        using (MemoryStream memoryStream = new MemoryStream())
                        {
                            png.Save(memoryStream);
                            bmp2 = new System.Drawing.Bitmap(memoryStream);
                        }

                        document.DocumentPaginator.PageSize = new Size(printDialog.PrintableAreaWidth, printDialog.PrintableAreaHeight);

                        // break the bitmap down into pages
                        int pageBreak         = 0;
                        int previousPageBreak = 0;
                        int temp       = 0;
                        int pageHeight =
                            Convert.ToInt32(a4Height * dpiScale);

                        while (pageBreak < bmp2.Height - pageHeight)
                        {
                            pageBreak += pageHeight - 250;  // Where we thing the end of the page should be
                            temp       = pageBreak;
                            // Keep moving up a row until we find a good place to break the page
                            while (!IsRowGoodBreakingPoint(bmp2, pageBreak))
                            {
                                pageBreak--;
                                if (pageBreak == previousPageBreak)
                                {
                                    pageBreak = temp;
                                    break;
                                }
                            }

                            var pageContent = GeneratePageContent(
                                bmp2,
                                previousPageBreak == 0 ? 0 : previousPageBreak - 3,
                                pageBreak + 3,
                                document.DocumentPaginator.PageSize.Width,
                                document.DocumentPaginator.PageSize.Height,
                                new Size(a4Width, a4Height),
                                left);
                            document.Pages.Add(pageContent);
                            previousPageBreak = pageBreak;
                        }

                        // Last Page
                        lastPageContent = GeneratePageContent(bmp2, previousPageBreak == 0 ? 0 : previousPageBreak - 3,
                                                              bmp2.Height, document.DocumentPaginator.PageSize.Width,
                                                              document.DocumentPaginator.PageSize.Height, new Size(a4Width, a4Height), left);
                        document.Pages.Add(lastPageContent);
                    }
                    printDialog.PrintDocument(document.DocumentPaginator, "Print Document Name");
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    //Scale UI control back to the original so we don't effect what is on the screen
                    //Size size = new Size(obj_Width, obj_Heigh);
                    //objectToPrint.Measure(size);
                    //objectToPrint.Arrange(new Rect(size));
                    Mouse.OverrideCursor = null;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                MessageBox.Show("打印时出现异常,异常信息为:" + ex.Message, "打印");
            }
            finally
            {
                try
                {
                    if (bmp != null)
                    {
                        bmp.Clear();
                        bmp = null;
                    }
                    if (document != null)
                    {
                        foreach (var fixedPage in document.Pages.Select(pageContent => pageContent.Child))
                        {
                            fixedPage.Children.Clear();
                        }
                    }
                    lastPageContent = null;

                    if (bmp2 != null)
                    {
                        bmp2.Dispose();
                    }
                    document = null;
                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                    //GC.Collect();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
            }
            return(true);
        }
コード例 #12
0
ファイル: PrintHelper.cs プロジェクト: likeshan168/boxlist
        /// <summary>
        /// 设置打印格式
        /// </summary>
        /// <param name="printDialog">打印文档</param>
        /// <param name="pageSize">打印纸张大小 a4</param>
        /// <param name="pageOrientation">打印方向 竖向</param>
        public void SetPrintProperty(PrintDialog printDialog, double width, double height, PageMediaSizeName pageSize = PageMediaSizeName.CreditCard, PageOrientation pageOrientation = PageOrientation.ReverseLandscape)
        {
            //PageMediaSizeName page = new PageMediaSizeName();

            var printTicket = printDialog.PrintTicket;

            printTicket.PageMediaType = PageMediaType.AutoSelect;
            printTicket.PageMediaSize = new PageMediaSize(width, height);

            //printTicket.PageMediaSize = new PageMediaSize(pageSize);//A4纸
            printTicket.PageOrientation = pageOrientation;//默认竖向打印
        }
コード例 #13
0
 // Get image for page size
 private string GetPageImage(PageMediaSizeName? name)
 {
     if (name.HasValue)
     {
         if (name.Value == PageMediaSizeName.ISOA3) return "pack://application:,,,/;component/Images/A3.png";
         if (name.Value == PageMediaSizeName.ISOA4) return "pack://application:,,,/;component/Images/A4.png";
         if (name.Value == PageMediaSizeName.ISOA5) return "pack://application:,,,/;component/Images/A5.png";
     }
     return null;
 }
コード例 #14
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="name">Page media size name</param>
 /// <param name="width">Page width</param>
 /// <param name="height">Page height</param>
 /// <param name="image">Page image</param>
 /// <param name="pageMediaSize">Page media size</param>
 public PageSize(PageMediaSizeName? name, double width, double height, string image, PageMediaSize pageMediaSize)
 {
     Name = name;
     Width = width;
     Height = height;
     Image = image;
     PageMediaSize = pageMediaSize;
 }