#swift #macos #printing #swiftui
#быстрая #macos #печать #swiftui
Вопрос:
У меня есть процедура печати, которая печатает представление на выбранном принтере. Работает нормально, но вывод всегда находится в центре страницы.
Я хотел бы иметь возможность печатать представление с исходным кодом в верхнем левом углу страницы, перепробовал все, что мог придумать, но всегда в центре.
Моя функция печати:
func printView(viewToPrint: AnyView){
let printContainerView = NSHostingView(rootView: viewToPrint)
printContainerView.frame.size = CGSize(width: 196, height: 200)
let printInfo = NSPrintInfo()
printInfo.horizontalPagination = .automatic
printInfo.verticalPagination = .automatic
printInfo.leftMargin = 0.0
printInfo.rightMargin = 0.0
printInfo.topMargin = 0.0
printInfo.bottomMargin = 0.0
let printOperation = NSPrintOperation(view: printContainerView, printInfo: printInfo)
printOperation.showsPrintPanel = true
printOperation.showsProgressPanel = true
printOperation.canSpawnSeparateThread = true
printOperation.run()
}
Потому что я не знаю, какой принтер используется, а некоторые не сообщают размер бумаги (думаю, это проблема с драйвером) Я не могу создать представление размером со страницу и расположить представление для печати соответствующим образом — попробовал и все еще в центре!
Я пришел к выводу, что я делаю что-то в корне неправильное, но оно печатает!
Спасибо за любые предложения.
Ответ №1:
Попробуйте выполнить следующее
let printInfo = NSPrintInfo.shared
printInfo.isHorizontallyCentered = false
printInfo.isVerticallyCentered = false