gpt4 book ai didi

macos - 更改页面方向不会缩放内容

转载 作者:行者123 更新时间:2023-12-03 16:32:23 27 4
gpt4 key购买 nike

我正在尝试在我的 OS X 应用程序中实现打印,但有一个我无法解决的问题,我希望你们中的一个人有一个想法。

例如,在 Safari 中,您可以点击打印,打印面板将向您显示如何以纵向模式打印内容,如果您单击方向按钮,它将以横向模式显示内容。

Portrait mode

Landscape mode

请注意,内容会随着方向的每次变化而缩放。

如果我在我的应用程序中尝试相同的内容,内容不会改变;它的宽度在纵向和横向上保持相同。

NSPrintOperation 或 NSPrintInfo 中是否有我可能忽略的设置?

更新 - 现在使用代码:

- (NSPrintOperation *)printOperationWithSettings:(NSDictionary *)printSettings error:(NSError **)outError {
NSPrintInfo *pInfo = [NSPrintInfo sharedPrintInfo];
[pInfo setLeftMargin:32];
[pInfo setRightMargin:32];
[pInfo setTopMargin:64];
[pInfo setBottomMargin:64];
[pInfo setHorizontalPagination:NSFitPagination];
[pInfo setVerticallyCentered:NO];
[[pInfo dictionary] setValue:[NSNumber numberWithBool:YES] forKey:NSPrintHeaderAndFooter];
[[pInfo dictionary] addEntriesFromDictionary:printSettings];

PrintTextView *printView = [[[PrintTextView alloc] initWithFrame:[pInfo imageablePageBounds]] autorelease];
printView.printJobTitle = @"Printed";

MSTablePrint *tPrint = [[[MSTablePrint alloc] init] autorelease];
NSMutableArray *itemArray = [[[NSMutableArray alloc] init] autorelease];

/*
Objects are added to "itemArray"
*/

NSAttributedString *atString = [tPrint attributedStringFromItems:itemArray];
[[printView textStorage] setAttributedString:atString];

NSPrintOperation *printOp = [NSPrintOperation printOperationWithView:printView printInfo:pInfo];

return printOp;
}

- (IBAction)print:(id)sender {
NSError *printError = nil;
NSPrintOperation *printOperation = [self printOperationWithSettings:nil error:&printError];
[[printOperation printPanel] setOptions:[[printOperation printPanel] options] | NSPrintPanelShowsPageSetupAccessory];

[printOperation runOperation];
}

非常感谢您的帮助,最好的祝愿,乌姆

最佳答案

您无法在 NSPrintOperation 设置或 NSPrintInfo 设置中完成布局更改。您将需要创建一个继承 View 。在该 View 中,有两种方法(调整PageHeightNew、调整PageWidthNew)。当您需要更改 View 布局时,会通知这些方法。确保您也调用了 super 方法。

在该方法中,更改 View 和所有 subview 的布局。

- (void)adjustPageHeightNew:(CGFloat *)newBottom top:(CGFloat)oldTop bottom:(CGFloat)oldBottom limit:(CGFloat)bottomLimit
{
[super adjustPageHeightNew:newBottom top:oldTop bottom:oldBottom limit:bottomLimit];
{
NSPrintOperation *printOperation = [NSPrintOperation currentOperation];

if(printOperation)
{
NSPrintInfo *printInfo = [printOperation printInfo];
CGFloat pageMargineX = ([printInfo leftMargin] + [printInfo rightMargin]);
CGFloat pageMargineY = ([printInfo topMargin] + [printInfo bottomMargin]);
CGFloat pageWidth = ([printInfo paperSize].width - pageMargineX);
CGFloat pageHeight = ([printInfo paperSize].height - pageMargineY);

[self setFrame:NSMakeRect(0, 0, pageWidth, ([[self subviews] count] * pageHeight))];

for(NSUInteger nView = 0; nView < [[self subviews] count]; nView ++)
{
NSTextView *PagedView = [[self subviews] objectAtIndex:nView];

[PagedView setFrame:NSMakeRect(0, (nView * pageHeight), pageWidth, pageHeight)];
}
}
}
}

关于macos - 更改页面方向不会缩放内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14877187/

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