0

我遇到了一个小问题,我很困惑。我正在用 C# 绘制一些 WPF 画布并将它们添加到列表中。我将列表绑定到 TabControl 以显示它们。我可以看到一切都很好。所以现在我想将它们全部保存为我为 ea Canvas 创建的 PDF 单独的 PDF。第一个 PDF 显示 Canvas 其他都是空的。如果我使用 ShowDialog() 在新窗口中的打印方法中打开 ea Canvas 并关闭它,那么它会创建所有页面。

那么如何在不打开需要关闭的额外窗口的情况下渲染所有内容。

我使用PDFSharp创建 PDF

//PDF创建方法

 s_document = new PdfDocument();
            s_document.Info.Title = "PDFKlemmen";
            s_document.Info.Author = Environment.UserName + " FESTO AG & Co. KG Abt. SG-ME";
            s_document.Info.Subject = "Belegungsplan IO";

            //cCanvastest ct = new cCanvastest(Can); // This is the other Window
            //ct.ShowDialog();

            PdfSharp.Pdf.PdfPage page = s_document.AddPage();
            page.Size = PdfSharp.PageSize.A372;

            RenderTargetBitmap bitmap = new RenderTargetBitmap((int)(1114 / 72 * dpi), (int)(1584 / 72 * dpi), dpi, dpi, PixelFormats.Pbgra32);//PixelFormats.Pbgra32/ 72 *300
            bitmap.Render(Can);
            BitmapEncoder encoder = new BmpBitmapEncoder();
            encoder.Frames.Add(BitmapFrame.Create(bitmap));


            BitmapImage bmp = new BitmapImage() { CacheOption = BitmapCacheOption.OnLoad };
            System.IO.MemoryStream outStream = new System.IO.MemoryStream();
            encoder.Save(outStream);
            outStream.Seek(0, System.IO.SeekOrigin.Begin);
            bmp.BeginInit();
            bmp.StreamSource = outStream;
            bmp.EndInit();



            XImage image = XImage.FromBitmapSource(bmp);

            XGraphics gfx = XGraphics.FromPdfPage(page);

            gfx.DrawImage(image, 0, 0, 1088, 1584);
            gfx.Dispose();
            image.Dispose();
            outStream.Close();

            //ct.Close();
            s_document.Save(sPfadTemp + "Klemme" + Nr.ToString() + ".pdf");
4

0 回答 0