C# PrintDocument 打印
2013-04-27 15:43
253 查看
进来搞Window打印,发现还是很好弄的,就是在PrintDocument上画,跟在Canvas画一样,要什么样子就画什么样子,先上示例代码
其中Graphics中的方法非常多,大家可以去参考文档,这里只是列出几个常用的,
以下图片就是以上代码打印后的效果
其中的缩放的打印方式不适合针式打印机,缩放后的文字在针式打印机上基本无法查看,后来查看生成的XPS文档,在文档里是图片格式保存的
XPS文档是GZip压缩格式可以使用RAR解压后查看
以下是生成xps文档的目录结构
其中1.fpage就是生成的文档结构,其它目录都是一些相关的资源文件,比如Resources中的Fonts字体文件夹,Images图像文件夹等等
下面是1.fpage中生成的内容,大家可以看出里面的格式就是xml
大家如果想操作xps文档的话可以引用ReachFramework.dll,System.Windows.Xps.Packaging命名空间
里面封装了xps文档的操作方法,这里抛砖引玉顺便介绍了xps的一些知识
顺便贴一个比较详细介绍打印的文件供大家参考
http://blog.csdn.net/gkq8124372/article/details/7494272
privatevoidbutton1_Click(objectsender,RoutedEventArgse) { varprintDocument=newPrintDocument(); //指定打印机 printDocument.PrinterSettings.PrinterName="MicrosoftXPSDocumentWriter"; //设置页边距 printDocument.PrinterSettings.DefaultPageSettings.Margins.Left=0; printDocument.PrinterSettings.DefaultPageSettings.Margins.Top=0; printDocument.PrinterSettings.DefaultPageSettings.Margins.Right=0; printDocument.PrinterSettings.DefaultPageSettings.Margins.Bottom=0; //设置尺寸大小,如不设置默认是A4纸 //A4纸的尺寸是210mm×297mm, //当你设定的分辨率是72像素/英寸时,A4纸的尺寸的图像的像素是595×842 //当你设定的分辨率是150像素/英寸时,A4纸的尺寸的图像的像素是1240×1754 //当你设定的分辨率是300像素/英寸时,A4纸的尺寸的图像的像素是2479×3508, printDocument.DefaultPageSettings.PaperSize=newPaperSize("A4",595,842); printDocument.PrintPage+=newPrintPageEventHandler(printDocument_PrintPage); try { printDocument.Print(); } catch(InvalidPrinterException) { } finally { printDocument.Dispose(); } } //打印方法 voidprintDocument_PrintPage(objectsender,PrintPageEventArgse) { varprintContent="打印测试"; varprintFont=newFont("宋体",12,System.Drawing.FontStyle.Regular); varprintColor=System.Drawing.Brushes.Black; varpointY=10f; //画字符串 e.Graphics.DrawString(printContent,printFont,printColor,10f,pointY); //如何打印带粗体,倾斜,字体中带横线,下划线的字符串,设置字体的FontStyle(粗体,倾斜,字体中带横线,下划线) printFont=newFont("宋体",12,System.Drawing.FontStyle.Bold|System.Drawing.FontStyle.Italic); e.Graphics.DrawString(printContent,printFont,printColor,10f,pointY+=20f); printFont=newFont("宋体",12,System.Drawing.FontStyle.Regular); //画图像 //e.Graphics.DrawImage(Image,10,50); //设置坐标系缩放 //设置打印坐标系X值为原值的0.6倍打印 e.Graphics.ScaleTransform(0.6f,1.0f); e.Graphics.DrawString(printContent,printFont,printColor,10f,pointY+=20f); //恢复坐标系缩放 e.Graphics.ScaleTransform(1/0.6f,1.0f); e.Graphics.DrawString(printContent,printFont,printColor,10f,pointY+=20f); //绘画的设置保存与恢复 varstatus=e.Graphics.Save(); e.Graphics.ScaleTransform(0.6f,1.0f); e.Graphics.DrawString(printContent,printFont,printColor,10f,pointY+=20f); e.Graphics.Restore(status); e.Graphics.DrawString(printContent,printFont,printColor,10f,pointY+=20f); //如果打印还有下一页,将HasMorePages值置为true; e.HasMorePages=false; }
其中Graphics中的方法非常多,大家可以去参考文档,这里只是列出几个常用的,
以下图片就是以上代码打印后的效果
其中的缩放的打印方式不适合针式打印机,缩放后的文字在针式打印机上基本无法查看,后来查看生成的XPS文档,在文档里是图片格式保存的
XPS文档是GZip压缩格式可以使用RAR解压后查看
以下是生成xps文档的目录结构
其中1.fpage就是生成的文档结构,其它目录都是一些相关的资源文件,比如Resources中的Fonts字体文件夹,Images图像文件夹等等
下面是1.fpage中生成的内容,大家可以看出里面的格式就是xml
<FixedPageWidth="571.04"Height="808.48"xmlns="http://schemas.microsoft.com/xps/2005/06"xml:lang="und"> <!--MicrosoftXPSDocumentConverter(MXDC)Generated!Version:0.3.7600.16385--> <GlyphsFill="#ff000000" FontUri="/Documents/1/Resources/Fonts/FBB4FB52-34A4-45CC-836A-F18952F112F9.odttf" FontRenderingEmSize="16.016" StyleSimulations="None" OriginX="12.32" OriginY="23.36" Indices="6275;2464;9083;16901" UnicodeString="打印测试"/> <CanvasRenderOptions.EdgeMode="Aliased"> <PathData="M13.92,29.6L79.36,29.679.36,44.4813.92,44.48z"> <Path.Fill> <ImageBrushImageSource="/Documents/1/Resources/Images/1.PNG" Viewbox="0,0,409,93"TileMode="None"ViewboxUnits="Absolute" ViewportUnits="Absolute"Viewport="13.92,29.6,65.44,14.88"/> </Path.Fill> </Path> <PathData="M7.84,48.8L45.44,48.845.44,63.687.84,63.68z"> <Path.Fill> <ImageBrushImageSource="/Documents/1/Resources/Images/2.PNG" Viewbox="0,0,235,93"TileMode="None"ViewboxUnits="Absolute" ViewportUnits="Absolute"Viewport="7.84,48.8,37.6,14.88"/> </Path.Fill> </Path> </Canvas> <GlyphsFill="#ff000000"FontUri="/Documents/1/Resources/Fonts/FBB4FB52-34A4-45CC-836A-F18952F112F9.odttf" FontRenderingEmSize="16.016"StyleSimulations="None"OriginX="12.32" OriginY="80.96"Indices="6275;2464;9083;16901"UnicodeString="打印测试"/> <PathData="M7.84,87.2L45.44,87.245.44,102.087.84,102.08z"> <Path.Fill> <ImageBrushImageSource="/Documents/1/Resources/Images/2.PNG" Viewbox="0,0,235,93"TileMode="None"ViewboxUnits="Absolute" ViewportUnits="Absolute"Viewport="7.84,87.2,37.6,14.88"/> </Path.Fill> </Path> <GlyphsFill="#ff000000"FontUri="/Documents/1/Resources/Fonts/FBB4FB52-34A4-45CC-836A-F18952F112F9.odttf" FontRenderingEmSize="16.016"StyleSimulations="None" OriginX="12.32"OriginY="119.36"Indices="6275;2464;9083;16901"UnicodeString="打印测试"/> </FixedPage>
大家如果想操作xps文档的话可以引用ReachFramework.dll,System.Windows.Xps.Packaging命名空间
里面封装了xps文档的操作方法,这里抛砖引玉顺便介绍了xps的一些知识
顺便贴一个比较详细介绍打印的文件供大家参考
相关文章推荐
- C# PrintDocument打印
- c# 的多页打印 [用 PrintDocument 不用水晶报表]
- C# PrintDocument 打印
- C# PrintDocument打印 多页 打印预览
- C#中PrintDocument打印功能的实现。分页打印内容控制与排版
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用
- C# PrintDocument 打印 和 打印预览
- C#打印(PrintDocument、PrintDialog、PageSetupDialog、PrintPreviewDialog)
- C#PrintDocument打印尺寸调整
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- C# 使用PrintDocument 绘制表格 完成 打印预览 DataTable
- C# PrintDocument打印 多页 打印预览
- C#打印(PrintDocument、PrintDialog、PageSetupDialog、PrintPreviewDialog)
- C#使用PrintDocument打印 多页 打印预览
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)实用的类
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- C#中使用GDI+与PrintDocument实现打印
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- c# 的多页打印 [用 PrintDocument 不用水晶报表]