从XPS文档中提取单个页面

3

我需要将现有的XPS文档拆分,并创建一个只包含原始文档一页的新XPS文档。我尝试复制文档并从复制的文档中删除页面,但这很慢。有更有效的方法吗?请使用C#。

谢谢。

已解决:

public void Split(string originalDocument, string detinationDocument)
    {
        using (Package package = Package.Open(originalDocument, FileMode.Open, FileAccess.Read))
        {
            using (Package packageDest = Package.Open(detinationDocument))
            {
                string inMemoryPackageName = "memorystream://miXps.xps";
                 Uri packageUri = new Uri(inMemoryPackageName);
                 PackageStore.AddPackage(packageUri, package);
                XpsDocument xpsDocument = new XpsDocument(package, CompressionOption.Maximum, inMemoryPackageName);
                XpsDocument xpsDocumentDest = new XpsDocument(packageDest, CompressionOption.Normal, detinationDocument);
                var fixedDocumentSequence = xpsDocument.GetFixedDocumentSequence();
                DocumentReference docReference = xpsDocument.GetFixedDocumentSequence().References.First();
                FixedDocument doc = docReference.GetDocument(false);
                var content = doc.Pages[2];
                var fixedPage = content.GetPageRoot(false);
                var writter = XpsDocument.CreateXpsDocumentWriter(xpsDocumentDest);
                writter.Write(fixedPage);
                xpsDocumentDest.Close();
                xpsDocument.Close();
            }
        }
    }
2个回答

8

2
我在处理几个XPS文件时,无法从PageContentChild属性中获取任何FixedPage。当通过Source属性设置固定页面时,需要使用PageContent.GetPageRoot而不是第6步中的Child。这在MSDN文档中有说明,但我一直忽略了它。 - Christopher Currens

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接