2013-11-07 2 views
2

Привет, я все еще новичок в Mac и объектив-c.Как сохранить CGPath в svg или pdf?

Я искал несколько часов, чтобы ответить на мой вопрос, но я никуда не денусь.

Я хочу нарисовать простой 2D путь/объект и сохранить его в файле svg или pdf.

Мой план состоял в том, чтобы создать CGPath (я уже знаю, как это сделать), а затем экспортировать его в svg или pdf файл на моем диске.

Я был бы очень благодарен, если у кого-то есть фрагмент кода или учебник, где это объясняется.

Надеюсь, NL.

+0

Как это ценн вопрос вне темы. – Curnelious

ответ

0

Я использовал Tipp пользователя1118321 и искал в Core Graphics.

К сожалению, мне по-прежнему требуется много времени, и почему-то я не могу добавить существующий путь к контексту ... так или иначе я не могу его погладить.

В моем случае это не проблема, так как я хочу нарисовать новый. Core Graphics предлагает функции, подобные функциям CGPaths в CGContext.

Это мой код я использую, чтобы создать файл в формате PDF и нарисуйте новый путь в нем:

-(void) createPDFwithSize:(CGRect) size andFilename: (const char *) filename; 
{ 
    CGContextRef pdfContext; 
    CFStringRef path; 
    CFURLRef url; 
    CFDataRef boxData = NULL; 
    CFMutableDictionaryRef myDictionary = NULL; 
    CFMutableDictionaryRef pageDictionary = NULL; 

    path = CFStringCreateWithCString (NULL, filename, kCFStringEncodingUTF8); 
    url = CFURLCreateWithFileSystemPath (NULL, path, kCFURLPOSIXPathStyle, 0); 
    CFRelease (path); 
    myDictionary = CFDictionaryCreateMutable(NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); 
    CFDictionarySetValue(myDictionary, kCGPDFContextTitle, CFSTR("My PDF File")); 
    CFDictionarySetValue(myDictionary, kCGPDFContextCreator, CFSTR("My Name")); 
    pdfContext = CGPDFContextCreateWithURL (url, &size, myDictionary); 
    CFRelease(myDictionary); 
    CFRelease(url); 
    pageDictionary = CFDictionaryCreateMutable(NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); 
    boxData = CFDataCreate(NULL,(const UInt8 *)&size, sizeof (CGRect)); 
    CFDictionarySetValue(pageDictionary, kCGPDFContextMediaBox, boxData); 
    CGPDFContextBeginPage (pdfContext, pageDictionary); 


    // ----------------------------------------------------------------------------------------------------------------- 
    // Draw stuff ... 

    CGContextSetLineWidth(pdfContext, 1); 
    CGContextSetStrokeColorWithColor(pdfContext, CGColorCreateGenericRGB(0, 0, 0, 1)); 

    CGContextBeginPath(pdfContext); 

    CGContextMoveToPoint(pdfContext, 100, 100); 
    CGContextAddLineToPoint(pdfContext, 100, 150); 
    CGContextAddLineToPoint(pdfContext, 125, 175); 
    CGContextAddLineToPoint(pdfContext, 150, 150); 
    CGContextAddLineToPoint(pdfContext, 150, 100); 
    CGContextAddLineToPoint(pdfContext, 100, 150); 
    CGContextAddLineToPoint(pdfContext, 150, 150); 
    CGContextAddLineToPoint(pdfContext, 100, 100); 
    CGContextAddLineToPoint(pdfContext, 150, 100); 

    CGContextStrokePath(pdfContext); // don't forget this 
    CGContextClosePath(pdfContext); 

    // ----------------------------------------------------------------------------------------------------------------- 

    CGPDFContextEndPage (pdfContext); 
    CGContextRelease (pdfContext); 
    CFRelease(pageDictionary); 
    CFRelease(boxData); 
} 
Смежные вопросы