1

我正在以编程方式生成一个FixedDocument来帮助我打印。 FixedDocument.ActualWidth出来了0。我怀疑这是因为我实际上并没有显示 FixedDocument。如何添加和显示FixedDocument对象?

这是一个初学者的问题。我不熟悉WPF。我查看了 MSDN/Goog。站点假设我已经添加了 FixedDocument 并且只需要对其进行操作。

我有:

    private FixedDocument CreateFixedDocumentWithPages()
    {            
        FixedDocument fixedDocument = CreateFixedDocument();
        fixedDocument.DocumentPaginator.PageSize = size;            

        PageContent content = AddContentFromImage();
        fixedDocument.Pages.Add(content);

        return fixedDocument;
    }

我想要的伪代码:myWpfFormObject.AddChild(fixedDocument)

4

2 回答 2

3

显示 FixedDocument:

在您的 Wpf 窗口中,添加 DocumentViewer Controle,然后设置 Document 属性。

对于实际宽度 pb:

我认为您应该为每个 FixedPage 调用方法 Measure & Arrange。

请参阅msdn中的示例中的以下代码:

Size sz = new Size(8.5 * 96, 11 * 96);
fixedPage.Measure(sz);
fixedPage.Arrange(new Rect(new Point(), sz));
fixedPage.UpdateLayout();

另请参阅https://stackoverflow.com/a/1695518/1271037

于 2013-10-07T16:34:58.310 回答
0

所以我的情况略有不同,但这个答案让我很接近。我正在使用固定文档来显示来自扫描仪的 Tiff。其中一些 Tiff 可以是合法的字母格式(比标准 A4 8.5 x 11 尺寸长)。下面的代码解决了我的问题,这个答案有帮助。

所以最后我正在制作一个固定的文档,创建一个页面内容,创建一个固定的页面,创建一个图像。

然后获取图像并将其添加到固定页面,然后将其获取固定页面并将其添加到页面内容,然后将其获取页面内容并将其添加到固定文档。

            System.Windows.Documents.FixedPage fixedPage = new System.Windows.Documents.FixedPage();

            System.Windows.Documents.PageContent pageContent = new System.Windows.Documents.PageContent();
            pageContent.Child = fixedPage;
            if (fixedDocument == null)
            {
                fixedDocument = new System.Windows.Documents.FixedDocument();
            }
            fixedDocument.Pages.Add(pageContent);


            System.Windows.Controls.Image image = new System.Windows.Controls.Image();

            TiffBitmapDecoder decoder = new TiffBitmapDecoder(new Uri(tiffImage, UriKind.Relative), BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnDemand);
            image.Source = decoder.Frames[0];

            fixedPage.Children.Add(image);

            //Code to make the legal letter size work.
            Size sz = new Size(decoder.Frames[0].Width, decoder.Frames[0].Height);
            fixedPage.Width = sz.Width;
            fixedPage.Height = sz.Height;

            pageContent.Width = sz.Width;
            pageContent.Height = sz.Height;
于 2016-11-17T16:15:35.487 回答