标签: documentpaginator

如何通过GetPageAsync与XpsDocumentWriter异步使用DocumentPaginator?

这里的想法是我有一个DocumentPaginator,我想与XpsDocumentWriter或PrintDialog一起使用,因为两者都可以选择打印给定的分页器.当我使用其中任何一个,即XpsDocumentWriter.Write [Async]或PrintDialog.PrintDocument时,通过GetPage与GetPageAsync加入paginator,我在派生的DocumentPaginator类中重写了它.

除了手动使用分页器并将Visuals提供给文档编写器之外,有没有办法触发DocumentPaginator的Asyc函数的使用?

wpf xpsdocument documentpaginator

10
推荐指数
0
解决办法
842
查看次数

如何设置Xps文档的页面大小?

我正在尝试使用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文档中的页面保留其默认纸张尺寸。

当逐步执行时,我可以看到该 …

c# fixeddocument .net-3.5 documentpaginator

5
推荐指数
1
解决办法
5517
查看次数

WPF 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)

wpf preview mvvm documentpaginator

4
推荐指数
1
解决办法
873
查看次数