Hi
I am creating a PDF programmatically in my iPhone app using CGContext and CGContextShowTextAtPoint. While this works fine for smaller text, whenever I have line breaks in my text (\n) or want the text to wrap automatically to the next line when it reaches the end of the page, this does not happen.
Any line breaks in the text are simply replaced by spaces and the text does not wrap. Would really appreciate a heads-up on how this can be achieved. Here's the code I use to create the PDF.
void CreatePDFFile (CGRect pageRect, const char *filename, NSString *fromFile) {
CGContextRef pdfContext;
CFStringRef path = CFStringCreateWithCString (NULL, filename, kCFStringEncodingUTF8);
CGURLRef url = CFURLCreateWithFileSystemPath (NULL, path, kCFURLPOSIXPathStyle, 0);
CFRelease (path);
CFMutableDictionaryRef myDictionary = CFDictionaryCreateMutable(NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
CFDictionarySetValue(myDictionary, kCGPDFContextTitle, CFSTR("My PDF File"));
CFDictionarySetValue(myDictionary, kCGPDFContextCreator, CFSTR("My Name"));
pdfContext = CGPDFContextCreateWithURL (url, &pageRect, myDictionary);
CFRelease(myDictionary);
CFRelease(url);
CGContextBeginPage (pdfContext, &pageRect);
CGContextSelectFont (pdfContext, "Helvetica", 14, kCGEncodingMacRoman);
CGContextSetTextDrawingMode (pdfContext, kCGTextFill);
CGContextSetRGBFillColor (pdfContext, 0, 0, 150, 1);
/* This works
const char *text = "Sed ut perspiciatis unde omnis iste natus error sit voluptatem";
CGContextShowTextAtPoint (pdfContext, 50, 760, text, strlen(text));*/
//This doesn't print line breaks in the PDF
const char *text = "Sed ut perspiciatis unde omnis iste natus error sit voluptatem\n accusantium doloremque laudantium, totam rem aperiam, eaque ipsa";
CGContextShowTextAtPoint (pdfContext, 50, 760, text, strlen(text));
//This doesn't wrap text to the next line
const char *text = "Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa";
CGContextShowTextAtPoint (pdfContext, 50, 760, text, strlen(text));
CGContextEndPage (pdfContext);
CGContextRelease (pdfContext);
}