我在Windows 10 x64和某些PCL驱动程序上打印时遇到问题。当我打印到A4尺寸时,它从底部切下约2厘米,而不是29.7厘米的打印高度,它只打印约27.4厘米。 请注意,相同的代码在Windows 7 x64 OS上运行正常。 我通过传递自定义分页器类使用printDialog.PrintDocument()方法进行打印。 我注意到的有趣的事情是,如果我只是解析静态Xaml字符串如下使用它工作正常但是如果我尝试使用代码隐藏在wrapPanel中添加FrameworkElements,它开始无法以完整大小打印。
> const string pageTemplate = @"<Border xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' xmlns:mc='http://schemas.openxmlformats.org/markup-compatibility/2006' xmlns:d='http://schemas.microsoft.com/expression/blend/2008' mc:Ignorable='d' BorderThickness='0' Name='page' Margin='0' Width='200' Height='200'> <Grid Name='grid'> <WrapPanel Name='wrapper' Orientation='Horizontal' /> </Grid> </Border>"; > var page = System.Windows.Markup.XamlReader.Parse(pageTemplate) as > Border;
答案 0 :(得分:0)
为了其他人的利益,我想更新并回答我设法解决问题的问题。我不确定这是WPF或打印机驱动程序中的错误,但我发现如下。 如果我将DocumentPaginator对象传递给PrintDialog.PrintDocument或XpsDocumentWriter.Write方法,则无法维护正确的页面大小,但是如果我手动获取每个页面的视觉效果(尽管使用相同的分页器类),然后将每个单独的页面传递给XpsDocumentWriter.Write方法(批处理模式)然后它适用于所有打印驱动程序。 我希望有一位来自微软专家意见的人,不管它是否是一个bug,以及为什么这两种方法的行为都不同。