[英]How to set the Page Size for an Xps Document?
我试图用FixedDocument保存XPS文档。 到目前为止,我没有改变页面大小。 如何将其更改为自定义尺寸?
我已将代码基于此问题的第一个答案 ,更具体地说,我使用此代码:
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
不接受新值。
我找到了各种在线资源,但尚未解决我的问题:
PageSize
属性是有效的,但它并没有我能说的那么多。 PageSize
属性是有效的,并提供了一个与我尝试过的相同的示例。 (除此之外,基于此文档页面,我甚至无法告诉单位使用的数字。) DocumentPage.Size
属性 ,但该属性不能公开更改。 在将页面添加到文档之前,我是否真的必须覆盖某些页面类才能获得不同的页面大小? DocumentPaginator
属性一次,因此没有“再次调用(...)。DocumentPaginator”,我可以保存一个实例。 PageSize
属性(此处设置为默认大小), 本教程使用FixedPage
的Width
和Height
属性。 但是,为这些快速测试分配一些正的随机值会导致我的XPS文档显然已损坏,并且XPS Viewer在打开时会显示错误消息。 FixedDocuments有固定的页面。 可以控制FixedPage的高度和宽度。 有点像这样:
FixedPage pageOne = new FixedPage();
pageOne.Height = 20;
pageOne.Width = 10;
或者在XAML中:
高度=“20”宽度=“10”
我相信FixedDocument只会以其页面大小打印。 即使将FixedDocument加载到DocumentViewer中,单击打印按钮时更改打印机设置的页面大小也无效。 一个FixedDocument按其定义保留了其内容的保真度。
修改它的唯一方法是创建一个派生的DocumentPaginator,它在内部调用FixedDocument.DocumentPaginator的函数并相应地修改返回值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.