WPF 打印图片

本文介绍了如何在WPF中实现打印图片和表单的功能。通过示例代码展示将控件画面保存为图片进行打印,以及利用XAML模板和数据创建打印表单的方法。提供了一个名为PrintImage的打印图片示例和一个PrintTable的打印表单示例。
摘要由CSDN通过智能技术生成

效果如图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tsk3rM9u-1607060571671)(https://img2020.cnblogs.com/blog/942899/202004/942899-20200421103915551-1032455812.gif)]
打印结果

private string outputDic { get { return $"{AppDomain.CurrentDomain.BaseDirectory}\\Temp\\"; } }

private void PrintImage(object sender, RoutedEventArgs e)
{
	//将控件imageBorder的画面输出图片
	var outputPath = GetPicFromControl(imageBorder as FrameworkElement);
	//打印
	Print(outputPath);
	//删除图片
	File.Delete(outputPath);
}

private string GetPicFromControl(FrameworkElement element)
{
	//96为显示器DPI
	double dpiX = 96;
	double dpiY = 96;

	var bitmapRender = new RenderTargetBitmap((int)element.ActualWidth, (int)element.ActualHeight, dpiX, dpiY, PixelFormats.Pbgra32);//位图 宽度  高度   水平DPI  垂直DPI  位图的格式    高度+100保证整个图都能截取
	//控件内容渲染RenderTargetBitmap
	bitmapRend
WPF (Windows Presentation Foundation) 是一种用于创建桌面应用程序的框架,虽然它主要用于图形用户界面,但它并不直接支持通过API调用打印打印PDF文件。但在.NET平台上,你可以借助第三方库如iTextSharp、PDFsharp等来处理PDF,然后转换为适合打印的形式。 以下是使用iTextSharp的一个示例步骤: 1. 安装iTextSharp库:如果你的项目还没有安装,可以使用NuGet包管理器添加`iTextSharp`库。 ```powershell Install-Package iTextSharp ``` 2. 使用代码打开PDF并转换成图像或流: ```csharp using iTextSharp.text; using iTextSharp.text.pdf; using System.IO; public byte[] PDFToImage(string pdfFilePath) { using (var reader = new PdfReader(pdfFilePath)) { var page = reader.GetPage(1); // 获取第一个页面 var imageStream = new MemoryStream(); var img = Image.GetInstance(page); img.SetAbsolutePosition(0, 0); img.ScaleToFit(img.Width, img.Height); using (var imgRenderer = new PdfWriter(imageStream)) { img.Render(imgRenderer); } return imageStream.ToArray(); } } ``` 3. 将图片转换为适合打印的格式,例如Png,然后使用System.Drawing.Printing类来打印: ```csharp using System.Drawing.Printing; // 先保存临时PNG File.WriteAllBytes("temp.png", imageStream.ToArray()); var printDocument = new PrintDocument(); printDocument.PrintPage += PrintDocument_PrintPage; printDocument.Print(); private void PrintDocument_PrintPage(object sender, PrintPageEventArgs e) { using (var image = Image.FromFile("temp.png")) { e.Graphics.DrawImage(image, 0, 0); } } void PrintButton_Click(object sender, RoutedEventArgs e) { printDocument.PrintQueue = new QueuePrintServer("your-print-server"); printDocument.Print(); } ``` 记得替换`"your-print-server"`为你实际的打印机服务器地址。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值