我想从字节数组创建一个新的System.Windows.Xps.Packaging.XpsDocument对象,因为我不想立即将它存储在本地计算机上.
通过使用临时文件,它工作正常:
public static XpsDocument OpenXpsDocument(string url)
{
WebClient webClient = new System.Net.WebClient();
byte[] data = webClient.DownloadData(url);
using (BinaryWriter writer = new System.IO.BinaryWriter(File.OpenWrite(xpsTempFilePath)))
{
writer.Write(data);
writer.Flush();
}
XpsDocument xpsDocument = new System.Windows.Xps.Packaging.XpsDocument(xpsTempFilePath, FileAccess.Read);
return xpsDocument;
}
Run Code Online (Sandbox Code Playgroud)
但是,我想要完成的更像是这样的:
public static XpsDocument OpenXpsDocument(string url)
{
WebClient webClient = new WebClient();
byte[] data = webClient.DownloadData(url);
Package package;
using (Stream stream = new MemoryStream(data))
{
package = System.IO.Packaging.Package.Open(stream);
}
XpsDocument xpsDocument = new XpsDocument(package, CompressionOption.SuperFast, url);
return xpsDocument;
}
Run Code Online (Sandbox Code Playgroud)
上述方法的用法如下:
XpsDocument xps = TaxReturnCreator.OpenXpsDocument(tempFileUrl); …Run Code Online (Sandbox Code Playgroud)