Я работаю над графическим приложением для ОС Ma c в Swift и хочу иметь профессиональные функции макета WYSIWYG для печати.
Я выделил странное поведение системы печати Какао и просто интересно, если кто-нибудь знает о шаге установки, который я пропускаю или обойти. Проблема заключается в том, что принтер «Любой» имеет нерегулярные нецентрированные поля, даже если запрашивается горизонтальное + вертикальное центрирование. В частности, левый край моего документа размером с альбомную букву составляет 18 пт, а правый - 40 пт - больше 1/2 дюйма, что я считаю недопустимым противоречием, не говоря уже о досадной неспособности полагаться на запрашиваемое центрирование.
Мое приложение основано на NSDocument, и я установил поля printInfo на 0, центрированные поля на true и ориентацию на .landscape.
self.printInfo.topMargin = 0.0
self.printInfo.rightMargin = 0.0
self.printInfo.leftMargin = 0.0
self.printInfo.bottomMargin = 0.0
self.printInfo.isHorizontallyCentered = true
self.printInfo.isVerticallyCentered = true
self.printInfo.orientation = .landscape
let newPrintOp = NSPrintOperation(view: self.printView!, printInfo: self.printInfo)
newPrintOp.showsPrintPanel = true
return newPrintOp
Я использую Page Setup в этом У меня есть принтер EPSON, который дает мне возможность выбрать обычную печать или печать без полей, и, выбрав любой из вариантов, выбрав пейзаж США, я получаю разумное изображение imageablePageBounds, которое, как сообщается, будет рисовать.
При настройке страницы без полей я get
... imageablePageBounds: (0.0, 0.0, 792.0, 612.0)
и с «обычной» буквой / альбомной ориентацией я получаю
... imageablePageBounds: (8.4000244140625, 8.399999618530273, 775.199951171875, 595.1999759674072)
Последний задает минимальный драйвер, но если вы удвоите смещение на 8,4 точки и добавите к высоте и ширине, вы все равно получите 792x612 == 11 дюймов x 8,5 дюймов
Если вместо этого я выберу «Любой» принтер в настройках страницы и выберите US Letter, landscape, imageablePageBounds сообщается (и применяется, даже при печати в PDF) как: ... imageablePageBounds: (18.0, 18.0, 734.0, 576.0)
Это дает 1/4 "(18-pt) поля слева, снизу и сверху, но заставляет отступ в 40 пт вправо (так как ширина всего 734 - она должна быть 756 для 10,5-дюймовой области рисования). И действительно, если я попытаюсь нарисовать 10-дюймовое изображение, центрированное с полями 36pt, правый край очень досадно обрезается, если я не масштабирую или не сдвигаю его. Это даже обрезается с выходом PDF с этой настройкой. Вот изображение на панели печати, на котором показана эта вырезка: внешняя черная линия - это границы изображения, заданные системой печати, а синяя линия (обрезанный правый край) - изображение по центру 10 x 7,5.
Кто-нибудь знает, есть ли исправление для этого странного поведения? Идеальным решением было бы получить разумную 1/4 "границу по умолчанию для всего, что я пытаюсь напечатать, но даже если я не могу получить максимальную ширину по умолчанию выше 734pt, я все равно хочу, чтобы она была отцентрирована так, чтобы я может по крайней мере работать в пределах 1/2 "поля без каких-либо ограничений.