gpt4 book ai didi

.net - WPF DocumentPaginator 和 DocumentPage 意外裁剪

转载 作者:行者123 更新时间:2023-12-01 16:24:55 26 4
gpt4 key购买 nike

我正在尝试在多个页面上打印 WPF Canvas 。

我非常满意将其缩放以适合页面宽度,然后剪切并翻译每个页面的 Canvas ;所有这些都是非常简单的数学。

我不明白的是如何获取可打印区域的尺寸,以及如何告诉打印机打印到哪里。无论我尝试什么,我使用的值似乎都是纸张的尺寸,因此,当打印机无法直接打印到纸张边缘时,我会发生裁剪。

var capabilities = printDialog.GetPrintCapabilities(dialog.PrintTicket);

功能具有以下属性:

capabilities.PageImageableArea.ExtentWidth
// "Gets the width of the imageable area"

什么是“可成像”区域?这是纸张上我可以放置内容的区域吗?我想是因为:

capabilities.PageImageableArea.OriginWidth
// Gets the distance from the left edge of the page to the imageable area.

但是下边距和右边距又如何呢?我在哪里可以找到这些信息?

DocumentPaginatorPageSize 属性应该设置为什么?我应该从 capability.PageImageableArea 中设置它吗?或者 dialog.Print() 函数设置了这个,而我只需要在 GetPage() 中读取它?

最后,当我返回 DocumentPage 时,我应该将什么传递给三个几何参数 pageSizebleedBoxcontentBox

谢谢:)

最佳答案

好吧,打印似乎总是从纸张的 (0, 0)(左上角)开始。

获取纸张尺寸:

printDialog.PrintableAreaWidth, printDialog.PrintableAreaHeight

以及上边距和左边距:

var printCapabilities = printDialog.PrintQueue.GetPrintCapabilities(printDialog.PrintTicket);
printCapabilities.PageImageableArea.OriginWidth, printCapabilities.PageImageableArea.OriginHeight

我假设底部和右边距与顶部和左边距相同,尽管这可能不安全。

您必须像平常一样缩放和裁剪 Canvas ,然后应用边距大小的 TranslateTransform 将内容移动到可打印区域。

关于.net - WPF DocumentPaginator 和 DocumentPage 意外裁剪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3194197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com