/// <summary>
 /// 打印
 /// </summary>
 /// <param name="printfile">照片路径</param>
 public void Print(string printfile)
 {
     PrintBitmap = ImageHepler.LoadBitmap(printfile);
     DocumentPrint.Print();
     DocumentPrint.Dispose();
     GC.Collect();
 }
        /// <summary>
        /// 打印预览
        /// </summary>
        /// <param name="printfile">打印文件路径</param>
        public void PrintView(string printfile)
        {
            PrintBitmap = ImageHepler.LoadBitmap(printfile);
            var pv = new PrintPreviewDialog {
                Document = DocumentPrint
            };

            pv.ShowDialog();
            pv.Dispose();
            GC.Collect();
        }
Ejemplo n.º 3
0
        public PaperText(decimal spacing, string originalText, StringFormat textFormat, Font textFont, PaperSize size, PrintStruct.Pdpi dpi)
        {
            Spacing = spacing;

            OriginalText = originalText;

            TextFormat = textFormat;

            TextFont = textFont;

            PagerSize = size;

            var printBitmap = new Bitmap(size.Width * dpi.X / 100, size.Height * dpi.Y / 100);

            printBitmap.SetResolution(dpi.X, dpi.Y);

            Segmentation = ImageHepler.GetStringRows(Graphics.FromImage(printBitmap), textFont, originalText);
        }
Ejemplo n.º 4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="spacing"></param>
        /// <param name="originalText"></param>
        /// <param name="size"></param>
        /// <param name="textFont"></param>
        public PaperText(decimal spacing, string originalText, PaperSize size, Font textFont)
        {
            Spacing = spacing;

            OriginalText = originalText;

            PagerSize = size;

            TextFormat = new StringFormat()
            {
                LineAlignment = System.Drawing.StringAlignment.Near, Alignment = StringAlignment.Center
            };

            TextFont = textFont;

            var printBitmap = new Bitmap(size.Width * 203 / 100, size.Height * 203 / 100);

            printBitmap.SetResolution(203, 203);

            Segmentation = ImageHepler.GetStringRows(Graphics.FromImage(printBitmap), textFont, originalText);
        }
Ejemplo n.º 5
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="path">图像路径</param>
 /// <param name="spacing">与上一行间距</param>
 public PaperImage(string path, decimal spacing)
 {
     PaperBitmap = ImageHepler.LoadBitmap(path);
     Spacing     = spacing;
 }
Ejemplo n.º 6
0
        private void Pd_PrintPage(object sender, PrintPageEventArgs e)
        {
            e.Graphics.SmoothingMode           = SmoothingMode.HighQuality;
            e.Graphics.PixelOffsetMode         = PixelOffsetMode.HighQuality;
            e.Graphics.CompositingQuality      = CompositingQuality.HighQuality;
            e.Graphics.InterpolationMode       = InterpolationMode.High;
            e.PageSettings.PrinterResolution.X = Dpi.X;
            e.PageSettings.PrinterResolution.Y = Dpi.Y;

            var rect = new Rectangle(DocumentPoint, new Size(e.PageBounds.Width, e.PageBounds.Height));

            foreach (var data in PrintPaperData)
            {
                if (data.GetType() == typeof(PaperText))
                {
                    var datatotype = data as PaperText;

                    rect.Y = (int)(rect.Y + datatotype.Spacing);

                    var rowindex = 0;

                    foreach (var drawdata in datatotype.Segmentation)
                    {
                        if (datatotype.Segmentation.Count > 1 && rowindex >= 1)
                        {
                            rect.Y = (int)(rect.Y + e.Graphics.MeasureString(drawdata, datatotype.TextFont).Height + 2);
                        }

                        e.Graphics.DrawString(drawdata, datatotype.TextFont, new SolidBrush(Color.Black), rect,
                                              datatotype.TextFormat);

                        rowindex = rowindex + 1;
                    }
                }
                else
                {
                    var datatotype = data as PaperImage;


                    if (datatotype.IsFit)
                    {
                        var fittable = ImageHepler.GetAdaptationSize(datatotype.PaperBitmap.Width, datatotype.PaperBitmap.Height, e.PageBounds.Width,
                                                                     e.PageBounds.Height, false);

                        var drawHeight = datatotype.BitmapMaxHeight > 0
                            ? datatotype.BitmapMaxHeight
                            : (int)fittable.Size.Dfith;

                        e.Graphics.DrawImage(datatotype.PaperBitmap, (int)fittable.Point.X,
                                             rect.Y + (int)datatotype.Spacing,
                                             datatotype.BitmapMaxWidth > 0 ? datatotype.BitmapMaxWidth : (int)fittable.Size.Dfitw,
                                             drawHeight
                                             );

                        rect.Y = (int)(rect.Y + drawHeight);
                    }
                    else
                    {
                        var x = e.PageBounds.Width / 2 - datatotype.PaperBitmap.Width / 2;

                        e.Graphics.DrawImage(datatotype.PaperBitmap, x,
                                             rect.Y + (int)datatotype.Spacing,
                                             datatotype.PaperBitmap.Width,
                                             datatotype.PaperBitmap.Height
                                             );

                        rect.Y = (int)(rect.Y + datatotype.PaperBitmap.Height);
                    }

                    datatotype.Dispose();
                }
            }
        }
        /// <summary>
        /// 打印事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Pd_PrintPage(object sender, PrintPageEventArgs e)
        {
            try
            {
                e.Graphics.SmoothingMode           = SmoothingMode.HighQuality;
                e.Graphics.PixelOffsetMode         = PixelOffsetMode.HighQuality;
                e.Graphics.CompositingQuality      = CompositingQuality.HighQuality;
                e.Graphics.InterpolationMode       = InterpolationMode.High;
                e.PageSettings.PrinterResolution.X = Dpi.X;
                e.PageSettings.PrinterResolution.Y = Dpi.Y;

                Bitmap bitmap;

                if (IsTp)
                {
                    var tbh = (PrintBitmap.Height * (e.PageBounds.Width * Dpi.X / 100)) / PrintBitmap.Width;
                    bitmap = new Bitmap(e.PageBounds.Width * Dpi.X / 100, tbh);
                }
                else
                {
                    bitmap = new Bitmap(e.PageBounds.Width * Dpi.X / 100, e.PageBounds.Size.Height * Dpi.Y / 100);
                }


                if (ImageCut == false)
                {
                    bitmap.SetResolution(Dpi.X, Dpi.Y);
                    var picsize = ImageHepler.FitSize(PrintBitmap.Width, PrintBitmap.Height, bitmap.Width, bitmap.Height);
                    var tempXy  = ImageHepler.PointXy(picsize, bitmap.Width, bitmap.Height);

                    var g = Graphics.FromImage(bitmap);

                    g.DrawImage(PrintBitmap,
                                new Rectangle(tempXy.X, tempXy.Y, (int)picsize.Fitw, (int)picsize.Fith));

                    g.Dispose();
                    e.Graphics.Clear(Color.White);
                    e.HasMorePages = false;
                    e.Graphics.DrawImage(bitmap, 0, 0);
                    if (EventPrintend != null)
                    {
                        EventPrintend(bitmap.Clone());
                    }
                    PrintBitmap.Dispose();
                    bitmap.Dispose();
                }
                else
                {
                    bitmap.SetResolution(Dpi.X, Dpi.Y);
                    var picsize = ImageHepler.FitSizeOutSide(PrintBitmap.Width, PrintBitmap.Height, bitmap.Width, bitmap.Height);
                    var tempXy  = ImageHepler.PointXy(picsize, bitmap.Width, bitmap.Height);

                    var g = Graphics.FromImage(bitmap);
                    g.DrawImage(PrintBitmap,
                                new Rectangle(tempXy.X, tempXy.Y, (int)picsize.Fitw, (int)picsize.Fith));

                    g.Dispose();
                    e.Graphics.Clear(Color.White);
                    e.HasMorePages = false;
                    e.Graphics.DrawImage(bitmap, 0, 0);
                    if (EventPrintend != null)
                    {
                        EventPrintend(bitmap.Clone());
                    }
                    PrintBitmap.Dispose();
                    bitmap.Dispose();
                }
            }
            catch (Exception ex)
            {
                if (EventPrintend != null)
                {
                    EventPrintend(null);
                }
                ErrorHelper.ErrorPutting(ex, System.Reflection.MethodBase.GetCurrentMethod().Name);
            }
        }