码迷,mamicode.com
首页 > 其他好文 > 详细

流文档 打印范围

时间:2016-11-09 19:22:42      阅读:335      评论:0      收藏:0      [点我收藏+]

标签:设置   ++   from   memory   容器   对象   for   create   printing   

//打印页码范围设置
private void PrintPageRangeSet(DocumentPaginator doc,int pageFrom,int pageTo)
{
//写入内存的XPS文档
var ms = new MemoryStream();
string pack = "pack://temp" + ".xps";
var package = Package.Open(ms, FileMode.Create, FileAccess.ReadWrite);
PackageStore.AddPackage(new Uri(pack), package);
var xpsDoc = new XpsDocument(package, CompressionOption.SuperFast, pack);

//创建xpsDoc的xpsDocumentWriter对象
var xpsDocumentWriter = XpsDocument.CreateXpsDocumentWriter(xpsDoc);

//将传入的doc写入临时的XPS对象中
xpsDocumentWriter.Write(doc);
//在docCopy中显示临时的XPS文档
var docCopy = xpsDoc.GetFixedDocumentSequence();

//创建系统打印机中的writer对象
XpsDocumentWriter printwriter = System.Printing.PrintQueue.CreateXpsDocumentWriter(printDialog.PrintQueue);

//返回一个可将 Visual 对象写入文档或打印队列中的 VisualsToXpsDocument。
var visualsToXpsDocument = (VisualsToXpsDocument)printwriter.CreateVisualsCollator();

//最大页码判断
if (pageTo > Viewer.PageCount)pageTo = Viewer.PageCount;

//讲分页器中的每一页加入容器中
for (int i = pageFrom-1; i < pageTo; i++)
{
var visual = ((IDocumentPaginatorSource)docCopy).DocumentPaginator.GetPage(i).Visual;
var cv = new ContainerVisual();
cv.Children.Add(visual);
visualsToXpsDocument.Write(cv, printDialog.PrintTicket);
cv.Children.Remove(visual);
}
visualsToXpsDocument.EndBatchWrite();
xpsDoc.Close();
}

流文档 打印范围

标签:设置   ++   from   memory   容器   对象   for   create   printing   

原文地址:http://www.cnblogs.com/MiLu/p/6047861.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!