XPSファイルのFixedPageエントリからいくつかのノードを削除しようとしています。私はFixedPageのxmlを私が望むやり方で動作させ、* .fpageファイルをxpsから抽出して、再度それらを置くことによって手動でテストする方法を書いた。すべてがOKのようだった。その結果、XPSファイルは、ZIPアーカイブの整合性を保持し、解凍、7zipを、Windowsエクスプローラなどで解凍することができますがC#でZipFileを使用してZIPアーカイブとしてXPSファイルを操作する
var arch = ZipFile.Open(xpsFileName, System.IO.Compression.ZipArchiveMode.Update);
foreach (var entry in arch.Entries)
if (entry.Name.EndsWith(".fpage"))
{
var file = entry.Open();
var page = XElement.Load(file);
page = ProcessPage(page);
file.Position = 0;
page.Save(file);
file.SetLength(file.Position);
file.Close();
}
arch.Dispose();
:だから、私は、XPSファイル内のすべての固定ページを処理簡単なユーティリティを開発しましたMicrosoft XPS Viewerは表示できず、何らかのエラーメッセージ(「この文書を開くことができませんでした」など)を表示します。 私はかなりファイルが有効なxpsファイルであることを確信しています。さらに、私が前に述べたユーティリティを使ってその内容を新しいzipファイルに再パックし、xpsに名前を変更すると、MS XPSビューアでその内容を見ることができるようになります。 誰かが私を正しい方向に押し込んだり、私が間違っていたことを教えてもらえますか?