• 将Xaml文档转成XPS文档[转]


    研究WPF的打印中,看到这篇文章,遂载之

    原地址:http://blog.csdn.net/johnsuna/article/details/2255417

    // ConverterWindow.xaml
     <Window x:Class="Xaml2XPS.ConverterWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="300" Width="300">
        <Grid>
            <Button Height="23" HorizontalAlignment="Right" Margin="0,9,12,0" Name="btnConvert" VerticalAlignment="Top" Width="75" Click="btnConvert_Click">ToXPS</Button>
        </Grid>
    </Window>

    // ConverterWindow.xaml.cs
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Shapes;
    using System.IO;
    using System.Windows.Markup;
    using System.Windows.Xps.Packaging;
    using System.Windows.Xps.Serialization;

    namespace Xaml2XPS
    {
        /// <summary>
        /// Interaction logic for Window1.xaml
        /// </summary>
        public partial class ConverterWindow : Window
        {
            FileStream srcXamlStream = new FileStream(@"E:/WPF_Books/Chapter 10/Xaml2XPS/Files/CommonLogo.xaml", FileMode.Open);
            string destXpsFile = @"E:/WPF_Books/Chapter 10/Xaml2XPS/Files/Demo.Xps";

            public ConverterWindow()
            {
                InitializeComponent();        
            }

            private void btnConvert_Click(object sender, RoutedEventArgs e)
            {
                ParserContext context = new ParserContext();
                context.BaseUri = new Uri(Directory.GetCurrentDirectory() + "//");
                XamlStreamToXps(srcXamlStream, context, destXpsFile);
            }

            public void XamlStreamToXps(Stream srcXamlStream, ParserContext context, string destXpsFile)
            {
                XpsDocument document = null;
                try
                {
                    if (System.IO.File.Exists(destXpsFile)) System.IO.File.Delete(destXpsFile);

                    document = new XpsDocument(destXpsFile, FileAccess.Write);
                    XpsPackagingPolicy packagePolicy = new XpsPackagingPolicy(document);
                    XpsSerializationManager serializationMgr =
                        new XpsSerializationManager(packagePolicy, false);

                    object parsedDocObject = (null == context) ?
                        XamlReader.Load(srcXamlStream) :
                        XamlReader.Load(srcXamlStream, context);

                    serializationMgr.SaveAsXaml(parsedDocObject);
                   

                    MessageBox.Show("OK");
                }
                catch (Exception ex)
                {
                    string exString = ex.Message;
                    MessageBox.Show(exString);
                }
                finally
                { 
                    if(document != null)   document.Close();
                    if (srcXamlStream != null) srcXamlStream.Close();
                }
            }  
        }
    }

  • 相关阅读:
    Sql Server数据库快照初探
    RestTemplate的exchange()方法,解决put和delete请求拿不到返回值的问题
    常用 HTTP 状态码
    RestTemplate进行访问分页PageInfo
    Java RestTemplate传递参数
    SQL-----数据库三种删除方式详解
    Mybatis异常-java.lang.IllegalArgumentException: invalid comparison:java.util.Date and java.lang.String
    SpringBoot 项目不加载 application.properties 配置文件
    git设置、查看、取消代理
    Layui:select下拉框回显
  • 原文地址:https://www.cnblogs.com/weivyuan/p/2850977.html
Copyright © 2020-2023  润新知