我遇到了一个小问题,我很困惑。我正在用 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");