WPF 打印中用户定义的边距

Posted

技术标签:

【中文标题】WPF 打印中用户定义的边距【英文标题】:Userdefined margins in WPF printing 【发布时间】:2011-07-06 07:30:35 【问题描述】:

大多数 WPF 打印示例都是这样的:

        PrintDialog dialog = new PrintDialog();
        if (dialog.ShowDialog() == true)
        
           StackPanel myPanel = new StackPanel();
           myPanel.Margin = new Thickness(15);
           Image myImage = new Image();
           myImage.Width = dialog.PrintableAreaWidth;
           myImage.Stretch = Stretch.Uniform;
           myImage.Source = new BitmapImage(new Uri("pack://application:,,,/Images/picture.bmp"));
           myPanel.Children.Add(myImage);
           myPanel.Measure(new Size(dialog.PrintableAreaWidth, dialog.PrintableAreaHeight));
           myPanel.Arrange(new Rect(new Point(0, 0), myPanel.DesiredSize));
           dialog.PrintVisual(myPanel, "A Great Image.");
        

我不喜欢的是,他们总是将边距设置为固定值。 但是在 PrintDialog 中,用户可以选择没有样本关心的单个边距。如果用户现在选择一个较大的边距作为程序设置的固定边距,则打印输出被截断。 有没有办法从 PrintDialog 获取用户选择的边距值?

TIA 迈克尔

【问题讨论】:

【参考方案1】:

我很确定您在PrintDialog 中更改的边距是特定于打印机驱动程序的设置。您无法从 .NET 访问设置是正常的。

【讨论】:

我找到了解决办法:PrintDocumentImageableArea area = null; XpsDocumentWriter xpsdw = PrintQueue.CreateXpsDocumentWriter(ref area);边距位于区域对象中。但这总是会打开打印对话框,也许我找到了一些方法可以在不打开对话框的情况下获得默认边距。

以上是关于WPF 打印中用户定义的边距的主要内容,如果未能解决你的问题,请参考以下文章

打印html页面时的边距

WPF 边距厚度

如何自定义 TextField 的边距、内边距和字体大小

Android - 自定义样式中指定的边距未生效

StaggeredGridLayoutManager 重新排序项目而不考虑定义的边距

iOS,标题中自定义单元格的边距与行不同,自动布局?