Matt, Laurent, Thanks for pointing me to this very obvious mistake ! It works perfectly now.
Julien Le 5 nov. 2010 à 05:23, Laurent Sansonetti a écrit : > Salut Julien, > > Looks like you forgot to set the value of the pointer. > CGPDFContextCreateWithURL() was therefore called with a pointer to a zero > rect. > > Try this: > > page_rectangle = NSMakeRect(0,0,100,100) > page_rectangle_pointer = Pointer.new_with_type(NSRect.type) # Using > NSRect.type is better than pasting the whole signature here > page_rectangle_pointer[0] = page_rectangle > > Laurent > > On Nov 4, 2010, at 3:12 AM, Julien Jassaud wrote: > >> Hello to every one, >> >> I am trying to programmatically create a pdf. I have this quite simple code >> in Cocoa that works perfectly : >> >> #import <Cocoa/Cocoa.h> >> #import <Foundation/Foundation.h> >> >> int main (int argc, const char * argv[]) { >> >> NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; >> >> CGContextRef pdfContext; >> CFStringRef path; >> CFURLRef url; >> CGRect pageRect; >> >> path = CFStringCreateWithCString(NULL, "./my_pdf.pdf", >> kCFStringEncodingUTF8); >> url = CFURLCreateWithFileSystemPath(NULL, path, kCFURLPOSIXPathStyle, 0); >> CFRelease (path); >> >> pageRect = NSMakeRect(0,0,100,100); >> >> pdfContext = CGPDFContextCreateWithURL(url, &pageRect, nil); >> CFRelease(url); >> >> CGPDFContextBeginPage(pdfContext, nil); >> >> CGContextSetCMYKFillColor(pdfContext, 1.0, 0.0, 0.0, 0.0, 1.0); >> CGContextFillRect(pdfContext, NSMakeRect(30, 30, 40, 40)); >> >> CGPDFContextEndPage(pdfContext); >> >> CGPDFContextClose(pdfContext); >> >> [pool drain]; >> return 0; >> >> } >> >> >> After running this program I get a pdf in perfect working order. I tried to >> port this little example to MacRuby like so : >> >> framework 'Cocoa' >> >> url = CFURLCreateWithFileSystemPath(nil, './my_pfd.pdf', >> KCFURLPOSIXPathStyle, 0) >> >> page_rectangle = NSMakeRect(0,0,100,100) >> page_rectangle_pointer = >> Pointer.new_with_type('{CGRect={CGPoint=dd}{CGSize=dd}}') >> >> pdf_context = CGPDFContextCreateWithURL(url, page_rectangle_pointer, nil) >> >> CGPDFContextBeginPage(pdf_context, nil) >> >> CGContextSetCMYKFillColor(pdf_context, 1.0, 0.0, 0.0, 0.0, 1.0) >> CGContextFillRect(pdf_context, NSMakeRect(30, 30, 40, 40)) >> >> CGPDFContextEndPage(pdf_context) >> CGPDFContextClose(pdf_context) >> >> This do produces a pdf but it is completely empty. Also, MacRuby complains >> when called with the -w option : >> >> $ macruby -w cocoapdf.rb >> unknown: warning: instance variable __octype__ not initialized >> >> >> Does anybody have an idea what I am doing wrong ? >> >> Thanks, >> Julien Jassaud >> >> _______________________________________________ >> MacRuby-devel mailing list >> MacRuby-devel@lists.macosforge.org >> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel > > _______________________________________________ > MacRuby-devel mailing list > MacRuby-devel@lists.macosforge.org > http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel