XPSドキュメントから1ページを抽出します
-
26-10-2019 - |
質問
既存の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();
}
}
}
解決
- XPSDocumentを開きます
- 宛先XPSDocument(同じ方法)を作成する
- 最初のXPSDocumentからFixedDocumentSequenceeceを入手してください
- シーケンスから最初の固定文書を取得します。
- 最初を取得します pagecontent から ページプロパティ
- から固定ページを取得します 子供の財産 pagecontentの
- 2番目のXPSDocumentからXPSDOCUMENTWRITERを取得します
- 固定ページを書きます
簡単。
指摘されているように クリストファー・カレンス, 、使用する必要がある場合があります PageContent.GetPageRoot
それ以外の Child
ステップ6で。
他のヒント
ありがとう、それはページレベルで定義された印刷物を無視するXPS印刷の制限に対する回避策を探している多くの人々を助けることができます。
所属していません StackOverflow