c# - 以编程方式创建 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;
}
解决方案
推荐阅读
- python - 如何在不指定扩展名的情况下删除文件?
- windows - 在部分已知的文件夹路径下查找文件
- swift - 每次创建新对象时迭代 NSManagedObject 的属性
- javascript - 遍历对象的键,然后遍历值(因为它们是数组)
- macos - 在 NSView 中绘制线条集合的最佳方法是什么?
- php - 使用 array_unique 方法未定义的偏移量
- java - Java代码中的TypeMismatch异常
- html - 修复将 HTML 页面转换为 PDF 时的 PDF 可访问性问题(注释缺少替代描述)
- asp.net - 收到 INET_E_DOWNLOAD_FAILURE 错误并重置与网站的连接
- mongodb - $inc 对文档没有影响(根本不起作用)