我正在尝试使用FixedDocument保存XPS文档。到目前为止,我没有改变页面大小。 如何将其更改为自定义尺寸?如何设置Xps文档的页面大小?
我已经根据我的the first answer to this question代码,更具体地说,我使用此代码:
if (File.Exists(filename)) {
File.Delete(filename);
}
var oldParent = LogicalTreeHelper.GetParent(this) as ContentControl;
try {
oldParent.Content = null;
FixedDocument doc = new FixedDocument();
PageContent pageCnt = new PageContent();
FixedPage page = new FixedPage();
page.Children.Add(this);
try {
((System.Windows.Markup.IAddChild)pageCnt).AddChild(page);
doc.Pages.Add(pageCnt);
XpsDocument xpsDoc = new XpsDocument(filename, FileAccess.ReadWrite);
try {
var writer = XpsDocument.CreateXpsDocumentWriter(xpsDoc);
writer.Write(doc);
}
finally {
xpsDoc.Close();
}
}
finally {
page.Children.Clear();
}
}
finally {
((ContentControl)oldParent).Content = this;
}
它复制的用户控件到一个XPS文档,就像我说的做得很成功,但是,用途默认的纸张尺寸。
我试图使用DocumentPaginator.PageSize
属性来设置新的页面大小(在实例化FixedDocument
后),但是我分配给该属性的任何东西似乎都被忽略;生成的XPS文档中的页面将保留其默认纸张尺寸。
当逐步执行时,我可以看到PageSize
属性的值真的发生了变化,所以它不像DocumentPaginator
不接受新值。
我发现各种在线资源,其中没有一个解决了我的问题尚未:
- This forum posting at MS Social坚持认为,设置
PageSize
性质的作品,但它并不至于我可以告诉。 - The docs声称设置
PageSize
属性起作用,并提供一个与我所尝试的相同的示例。 (除此之外,根据这个文档页我甚至不能告诉单位使用的数字。) - 该文档也指向
DocumentPage.Size
property,但该属性不能公开更改。在将页面添加到文档之前,是否真的必须重写某些页面类才能获得不同的页面大小? - This forum posting描述了同样的问题,但答案似乎对我来说毫无意义。我一次只使用
DocumentPaginator
属性,所以没有“再次调用(...)。DocumentPaginator”,为此我可以保存一个实例。 - This question听起来很有希望,但它实际上不是关于页面大小,而是关于给定页面上图像的大小。
- 除了上述
PageSize
属性(设置为似乎是默认大小反正在这里),this tutorial使用FixedPage
的Width
和Height
性能。但是,为这些快速测试分配一些正的随机值会导致我的XPS文档显然已损坏,并且XPS Viewer在打开时显示错误消息。
为downvote任何解释? –