这里的想法是我有一个DocumentPaginator,我想与XpsDocumentWriter或PrintDialog一起使用,因为两者都可以选择打印给定的分页器.当我使用其中任何一个,即XpsDocumentWriter.Write [Async]或PrintDialog.PrintDocument时,通过GetPage与GetPageAsync加入paginator,我在派生的DocumentPaginator类中重写了它.
除了手动使用分页器并将Visuals提供给文档编写器之外,有没有办法触发DocumentPaginator的Asyc函数的使用?
我正在尝试使用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;
}
Run Code Online (Sandbox Code Playgroud)
它可以将用户控件复制到XPS文档中,并且可以成功完成复制,但是正如我所说,它使用默认的纸张尺寸。
我尝试使用该DocumentPaginator.PageSize属性设置新的页面大小(在实例化之后FixedDocument),但是分配给该属性的任何内容似乎都将被忽略;生成的XPS文档中的页面保留其默认纸张尺寸。
当逐步执行时,我可以看到该 …
我使用下面的代码多年,但突然停止显示图像。我做了一个简短的版本来测试它并解释:
有一个UserControl XamlPage只包含两个控件:
<StackPanel>
<TextBlock Text="My Content"/>
<Image Source="/Images/flower.jpg" Height="100"/>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
XamlPage用于类的派生类DocumentPaginator:
public class Paginator : DocumentPaginator
{
double pageHeight = 1122.52;
double pageWidth = 793.7;
Size mySize;
public Paginator()
{
mySize = new Size(pageWidth, pageHeight);
}
public override DocumentPage GetPage(int pageNumber)
{
XamlPage page = new XamlPage();
page.Measure(PageSize);
page.Arrange(new Rect(new Point(0, 0), PageSize));
page.UpdateLayout();
return new DocumentPage(page, PageSize, new Rect(0, 0, 10, 10), new Rect());
}
public override bool IsPageCountValid
{
get { return …Run Code Online (Sandbox Code Playgroud)