WPF-XPSドキュメントをマージする方法
xpsファイルをマージして一つにする方法。備忘録として
参考記事:https://stackoverflow.com/questions/10672456/merging-xps-documents-make-last-one-duplicate
public void DoMerge(List<string> mergedFiles)
{
// ソースドキュメントの準備
List<XpsDocument> sourceXps = new List<XpsDocument>();
foreach (var f in mergedFiles)
{
sourceXps.Add(new XpsDocument(f, FileAccess.Read));
}
// 出力先
var name = destinationPath;
if (File.Exists(name))
{
File.Delete(name);
}
XpsDocument destXps = new XpsDocument(name, System.IO.FileAccess.ReadWrite);
// ライター
XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(destXps);
FixedDocumentSequence seq = new FixedDocumentSequence();
// マージ
foreach (XpsDocument doc in sourceXps)
{
FixedDocumentSequence sourceSeq = doc.GetFixedDocumentSequence();
foreach (DocumentReference dr in sourceSeq.References)
{
DocumentReference newDr = new DocumentReference();
newDr.Source = dr.Source;
(newDr as System.Windows.Markup.IUriContext).BaseUri = (dr as System.Windows.Markup.IUriContext).BaseUri;
FixedDocument fd = newDr.GetDocument(true);
newDr.SetDocument(fd);
seq.References.Add(newDr);
}
}
// 終了処理
writer.Write(seq);
destXps.Close();
}
Author And Source
この問題について(WPF-XPSドキュメントをマージする方法), 我々は、より多くの情報をここで見つけました https://qiita.com/ka26/items/ebe8e1a267d5c30385bd著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .