public void RenderCanvasImage(int maxRight, int maxBottom, Canvas surface, Transform transform)
{
RenderTargetBitmap renderBitmap = new RenderTargetBitmap(maxRight, maxBottom, 96d, 96d, PixelFormats.Pbgra32);
renderBitmap.Render(surface);
PrintDialog dialog = new PrintDialog();
if (dialog.ShowDialog() != true)
{
return;
}
Grid grid = new Grid();
Image myImage = new Image();
myImage.Source = renderBitmap;
myImage.Stretch = Stretch.Uniform;
grid.Children.Add(myImage);
Grid.SetColumn(myImage, 0);
Grid.SetRow(myImage, 1);
grid.Measure(new Size(dialog.PrintableAreaWidth, dialog.PrintableAreaHeight));
grid.Arrange(new Rect(new Point(0, 0), grid.DesiredSize));
dialog.PrintVisual(grid, "My Canvas");
surface.LayoutTransform = transform;
}
我使用上面的代码用 Microsoft Print to PDF 打印我的画布。它在所有情况下都能正常工作,但是当我在文件名中输入逗号时,例如(打印,测试),同时打印。它不会保存我的文件,也不会提供任何错误/异常代码,通过这些代码我可以通知用户更改文件名。
请帮我解决我的问题。
答案 0 :(得分:3)
简而言之,不要这样做
这是打印到PDF时的已知错误
使用其他驱动程序或不要在文件名中加上逗号
它不仅来自WPF,在某些情况下也是如此。
Bug in "Print to PDF" and "Print to XPS" in Windows 10? comma in filename results in zero-byte file
Microsoft Print to PDF not working