首页 > 解决方案 > 以编程方式创建 XPS 文件会创建损坏的文件

问题描述

我在以编程方式创建 XPS 文件时遇到问题。下面的代码确实生成了一个 XPS 文件,但是当我尝试打开它时,它以某种方式损坏并且无法打开。输出文件不是空的,它的大小对于我要创建的类型文档来说是正确的。输出可以在这里下载

     static void Main(string[] args)
    {
        using (var writer = File.OpenWrite("c:/temp/test.xps"))
        {
            using (var s = getXpsStream())
            {
                s.Seek(0, SeekOrigin.Begin);
                s.CopyTo(writer);
            }
        }
    }
    static Stream getXpsStream()
    {
        var stream = new MemoryStream();
        var package = Package.Open(stream, FileMode.Create);
        var xpsDoc = new XpsDocument(package, CompressionOption.Normal);
        var xpsWriter = xpsDoc.AddFixedDocumentSequence();
        string tempPath = "c:/temp/Document";
        for (int i = 1; i <= 3; i++)
        {
            var docWriter = xpsWriter.AddFixedDocument();
            var pageWriter = docWriter.AddFixedPage();
            var image = pageWriter.AddImage(XpsImageType.JpegImageType);

            using (Stream imageStream = image.GetStream())
            {
                string filename = tempPath + i;
                using (var istream = File.OpenRead(filename + ".png"))
                {
                    istream.CopyTo(imageStream);
                }
            }
        }
        xpsDoc.Close();
        return stream;
    }

标签: c#.netxps

解决方案


推荐阅读