4

WPFで70枚の画像のセットを印刷しようとしていました。そこで、多くの参考文献で見た固定ドキュメントを使用し、以下のコードを使用して印刷を試みました。

private void button1_Click(object sender, RoutedEventArgs e)
    {
        PrintDialog d = new PrintDialog();
        d.PrintDocument(PrintingDoc().DocumentPaginator, "test");
    }

    private FixedDocument PrintingDoc()
    {
        FixedDocument document = new FixedDocument();
        Visual viewerControl;
        string[] Documents = System.IO.Directory.GetFiles("../../U/");
        DrawingVisual dv;
        DrawingContext context ;
        BitmapImage im ;
        foreach (string doc in Documents)
        {

                dv = new DrawingVisual();
                context = dv.RenderOpen();
                im = new BitmapImage();
                im.BeginInit();
                im.UriSource = new Uri(doc, UriKind.Relative);
                im.EndInit();
                context.DrawImage(im, new Rect(0,0,im.Width,im.Height));
                context.Close();

                PageContent m_PageContent = new PageContent();
                FixedPage page = new FixedPage();

                VisCont myContainer = new VisCont();
                myContainer.AddVisual(dv);
                page.Children.Add(myContainer);
                ((IAddChild)m_PageContent).AddChild(page);
                document.Pages.Add(m_PageContent);
            }
        }
        return document;
    }
}
internal class VisCont: FrameworkElement
{
    private readonly VisualCollection children;
    public VisCont()
    {
        children = new VisualCollection(this);
    }

    public void AddVisual(Visual v)
    {
        children.Add(v);
    }
}

d.PrintDocument で以下の例外が発生しました。「プログラムの実行を続行するにはメモリが不足しています。」

注記として、これは X86 構成でのみ再現され、X64 では再現されません。助けてくれる友達はいますか?

4

0 に答える 0