Я пытаюсь напечатать холст WPF на нескольких страницах.
Я очень доволен, масштабируя его по ширине страницы, затем обрезая и переводя холст для каждой страницы;все довольно простые математические вычисления.
Чего я не понимаю, так это как получить размеры области печати и как указать принтеру, куда печатать.Независимо от того, что я пытаюсь сделать, появляются значения, которые я использую, это размер бумаги, и поэтому я получаю обрезку, так как принтер не может печатать прямо до края бумаги. Возможности
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.
Однако как насчет нижнего и правого полей?Где я могу найти эту информацию?
Каким должно быть установлено свойство PageSize
DocumentPaginator
?Должен ли я установить это от capabilities.PageImageableArea
?Или функция dialog.Print()
устанавливает это, и мне просто нужно прочитать из нее в GetPage()
?
Наконец, когда я возвращаю DocumentPage
, что я передаю в три аргумента геометрии pageSize
, bleedBox
и contentBox
?
Спасибо:)