首页 新闻 会员 周边

不将文件保存到本地的情况下,如何获取文件流的Document属性

0
悬赏园豆:200 [待解决问题]

求教参数为Stream类型的文件流和int类型的文件格式,如何在不将文件流保存到本地的情况下,获取到其中的XpsDocument或者Document属性,且无乱码,附上代码片段

private void PreviewFile(Stream fileStr, int fileType)
{
try
{
using (fileStr)
{
switch (fileType)
{
case 1:
moonPdfPanel.Visibility = Visibility.Collapsed;
toolBar.Visibility = Visibility.Collapsed;
documentViewer.Visibility = Visibility.Visible;
byte[] buffer = new byte[fileStr.Length];
fileStr.Read(buffer, 0, buffer.Length);
var doc = new FlowDocument();
MemoryStream memoryStream = new MemoryStream(buffer);
var textRange = new TextRange(doc.ContentStart, doc.ContentEnd);
textRange.Load(memoryStream, DataFormats.Rtf);
MemoryStream ms = new MemoryStream();
Package package = Package.Open(ms, FileMode.Create, FileAccess.ReadWrite);
Uri DocumentUri = new Uri("pack://InMemoryDocument.xps");
PackageStore.RemovePackage(DocumentUri);
PackageStore.AddPackage(DocumentUri, package);
XpsDocument xpsDocument = new XpsDocument(package, CompressionOption.NotCompressed, DocumentUri.AbsoluteUri);
XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(xpsDocument);
writer.Write(((IDocumentPaginatorSource)doc).DocumentPaginator);
documentViewer.Document = xpsDocument.GetFixedDocumentSequence();
xpsDocument.Close();
break;
case 2:

                        break;
                    case 3:
                       
                        break;
                    case 4:

                        break;
                    case 5:

                        break;
                    default:
                        break;
                }
            }
        }
        catch (Exception ex)
        {
            _isLoaded = false;
            throw;
        }

    }
勤奋的二牛的主页 勤奋的二牛 | 初学一级 | 园豆:8
提问于:2021-08-27 11:09
< >
分享
所有回答(2)
0

把这个当临时文件了,操作完把文件删除

为乐而来 | 园豆:1432 (小虾三级) | 2021-08-27 14:18

我目前就是这样处理的,获取一个系统临时文件,然后操作,领导说不能存到本地,只能使用内存,为了安全着想,我人有点麻

支持(0) 反对(0) 勤奋的二牛 | 园豆:8 (初学一级) | 2021-08-27 14:22
0

自带的XpsDocument接口粒度不够小,可能无法满足你的要求。你可以尝试GemBox.Spreadsheet,也许能满足你们的要求,不过免费版有页数限制。

开源的有PdfSharp.XPS,其他的你可以再找找。

功能实现要求越高是有代价的。也可以找到 XPS 文档格式协议,自己去解析,有一些这样的paper可以参考。

楚人Leo | 园豆:803 (小虾三级) | 2021-09-01 22:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册