如何在Cocoa中绘制PDF上下文

时间:2013-01-28 19:45:51

标签: macos pdf cocoa draw quartz-graphics

我正在尝试使用NSView个对象保存PDF文件。 这是Square类(NSView的子类)的实现。

@implementation Square

- (id)initWithColor:(NSColor *)aColor;
{
if (self = [super init])
{
    self.frame = NSMakeRect(0, 0, 50, 50);
    self.color = aColor;
}
return self;
}

- (void)drawRect:(NSRect)dirtyRect
{
[self.color set];
NSRectFill(dirtyRect);

}

以下是DrawView的实施的一部分 - NSView

的次级
- (void)awakeFromNib
{
squareGroup = [[NSMutableArray alloc] init];
}

- (void)addSquare:(Square *)square
{
[squareGroup addObject:square];
[self addSubview:square];
}

- (void)drawRect:(NSRect)dirtyRect
{
[[NSColor whiteColor] set];
NSRectFill(dirtyRect);
}

我可以点击按钮RedBlue并添加蓝色或红色的Square对象,当我点击Save我要保存白色{{1}其上有DrawView个对象。我现在可以在Square上移动Square个对象,因此每个DrawView个对象位于不同的位置。

我的保存方法如下所示(在Square类中):

DrawView

结果我在主目录中只有空白文件。

我的保存方法有什么问题?我怎么能这样做呢?

1 个答案:

答案 0 :(得分:2)

有一个非常有用的教程here可以帮助您

他们提出了两种方式:第一种是这种方式,但第二种方式更全面,值得一看。

(void)didEnd:(NSSavePanel *)sheet
returnCode:(int)code
saveFormat:(void *)saveType
{
if (code == NSOKButton)
{
    if (pageIt)
    {

    }
    else
    {
        NSRect r = [textView bounds];
        NSData *data = [textView dataWithPDFInsideRect:r];

        [data writeToFile:[sheet filename] atomically:YES];
    }
}
}