Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 热可可创建NSTextView,向其中添加NSString并打印_Cocoa_Macos - Fatal编程技术网

Cocoa 热可可创建NSTextView,向其中添加NSString并打印

Cocoa 热可可创建NSTextView,向其中添加NSString并打印,cocoa,macos,Cocoa,Macos,我有一个窗口,有一个打印收据的按钮。我需要做的是创建一个简单的NSTextView,向其中添加一个NSString(至少类似于“Hello World”)并打印它,而不在窗口上显示NSTextView 以下是我目前拥有的: NSTextView *textView = [[NSTextView alloc] init]; NSString *text = @"testing"; [textView setEditable:true]; NSRange rang

我有一个窗口,有一个打印收据的按钮。我需要做的是创建一个简单的NSTextView,向其中添加一个NSString(至少类似于“Hello World”)并打印它,而不在窗口上显示NSTextView

以下是我目前拥有的:

    NSTextView *textView = [[NSTextView alloc] init];

    NSString *text = @"testing";

    [textView setEditable:true];
    NSRange range = NSMakeRange( 0, [[textView string] length]);
    [textView setSelectedRange:range];
    [[[textView textStorage] mutableString] appendString:text];

    NSPrintOperation *printOperation;

    printOperation = [NSPrintOperation printOperationWithView:textView];


    [printOperation runOperation];
当我运行它时,我看到打印对话框,但预览是空的。 当我更改打印操作WithView:textView];从“文本视图”到“我的窗口”上的一个现有视图,它会打印“确定”

主要是。。我不想在单击“打印”按钮后显示视图。理想情况下,我希望打印文本,而不是视图

您是否尝试过:

[textView print];

您是否尝试过将
-initWithFrame
与非零rect一起使用

NSTextView *textview = [[NSTextView alloc] initWithFrame:NSMakeRect(0, 0, 468, 648);

(468 x 648将适合1英寸边距的A4纸张。)

这非常好。再做一次增强。为了使打印输出不居中,并正确填充页面,请将printInfo作为参数传入

NSPrintOperation *printOperation;

NSPrintInfo *pInfo = [[NSPrintInfo alloc] init];
[pInfo setBottomMargin:50];
[pInfo setTopMargin:50];
[pInfo setVerticallyCentered:false];
printOperation = [NSPrintOperation printOperationWithView:textView printInfo:pInfo];

[printOperation runOperation];

下面是一个在
NSDocument
子类中工作的实现。修改它以满足您的需要

- (NSPrintOperation *)printOperationWithSettings:(NSDictionary<NSString *,id> *)printSettings error:(NSError * _Nullable __autoreleasing *)outError
{
    NSPrintInfo * printInfo = [self printInfo];

    printInfo.topMargin = 15.0;
    printInfo.leftMargin = 10.0;
    printInfo.rightMargin = 10.0;
    printInfo.bottomMargin = 15.0;
    printInfo.verticallyCentered = NO;

    NSRect bounds = printInfo.imageablePageBounds;

    NSTextView * printView = [[NSTextView alloc] initWithFrame:bounds];
    printView.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;

    [printView.textStorage appendAttributedString:self.attributedStringRepresentation];

    return [NSPrintOperation printOperationWithView:printView printInfo:printInfo];
}
-(NSPrintOperation*)带设置的打印操作:(NSDictionary*)打印设置错误:(NSError*\u Nullable\u autoreleasing*)outError
{
NSPrintInfo*printInfo=[self printInfo];
printInfo.topMargin=15.0;
printInfo.leftMargin=10.0;
printInfo.rightMargin=10.0;
printInfo.bottomMargin=15.0;
printInfo.verticallyCentered=否;
NSRect bounds=printInfo.imageablePageBounds;
NSTextView*printView=[[NSTextView alloc]initWithFrame:bounds];
printView.autoresizingMask=NSViewWidthSizable | NSViewHeightSizable;
[printView.textStorage appendAttributedString:self.attributedStringRepresentation];
返回[NSPrintOperation printOperationWithView:printView printInfo:printInfo];
}

是的,我做了。我尝试了
[textView打印:nil]
[textView打印:self]它仍然不返回任何内容。还有一件事:如果我添加类似于
NSRect pos的内容;位置原点=NSMakePoint(0,0);NSTextView*textView=[[NSTextView alloc]initWithFrame:pos]它显示21个空白页。648的高度产生2页(在10.7.3中)。我是唯一一个吗?