/// <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(); }
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); }
/// <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); }
/// <summary> /// /// </summary> /// <param name="path">图像路径</param> /// <param name="spacing">与上一行间距</param> public PaperImage(string path, decimal spacing) { PaperBitmap = ImageHepler.LoadBitmap(path); Spacing = spacing; }
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); } }