我遇到了一个与之混淆的问题。 我在C#中绘制一些WPF Canvas并将它们添加到列表中。我将列表绑定到TabControl以显示它们。我看得很清楚。所以现在我想将它们全部保存为PDF,我为ea Canvas创建了一个单独的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");