tags:

views:

339

answers:

1

hi

i am drawing a pdf by the following code

CGContextRef pdfContext;
CFStringRef path;
CFURLRef url;



CFMutableDictionaryRef myDictionary = NULL;
// Create a CFString from the filename we provide to this method when we call it
path = CFStringCreateWithCString (NULL, filename,
          kCFStringEncodingUTF8);
// Create a CFURL using the CFString we just defined
url = CFURLCreateWithFileSystemPath (NULL, path,
          kCFURLPOSIXPathStyle, 0);
CFRelease (path);
// This dictionary contains extra options mostly for 'signing' the PDF
myDictionary = CFDictionaryCreateMutable(NULL, 0,
           &kCFTypeDictionaryKeyCallBacks,
           &kCFTypeDictionaryValueCallBacks);
CFDictionarySetValue(myDictionary, kCGPDFContextTitle, CFSTR("My PDF File"));
CFDictionarySetValue(myDictionary, kCGPDFContextCreator, CFSTR("My Name"));
// Create our PDF Context with the CFURL, the CGRect we provide, and the above defined dictionary
pdfContext = CGPDFContextCreateWithURL (url, &pageRect, myDictionary);
// Cleanup our mess
CFRelease(myDictionary);
CFRelease(url);
//CGContextSetLineCap(pdfContext, kCGLineCapButt);

// Done creating our PDF Context, now it's time to draw to it

CGContextBeginPage (pdfContext, &pageRect);

but when calll goes to begin page method it just draw a single page only than how can i declare the proper context that it could draw multiple pages

Thanks balraj verma

hi i am attaching the full code that i am using to draw a pdf but it draw only one page pls have a look and give me any suggestion if you have pls

-(void)createPDFFileWithRect: (CGRect) pageRect andFileName:(const char*)filename {

// This code block sets up our PDF Context so that we can draw to it
CGPDFContextCreateWithURL(url,
        ((0, 0), (1000, 1000)), nil);
CGContextRef pdfContext;
CFStringRef path;
CFURLRef url;



CFMutableDictionaryRef myDictionary = NULL;
// Create a CFString from the filename we provide to this method when we call it
path = CFStringCreateWithCString (NULL, filename,
          kCFStringEncodingUTF8);
// Create a CFURL using the CFString we just defined
url = CFURLCreateWithFileSystemPath (NULL, path,
          kCFURLPOSIXPathStyle, 0);
CFRelease (path);
// This dictionary contains extra options mostly for 'signing' the PDF
myDictionary = CFDictionaryCreateMutable(NULL, 0,
           &kCFTypeDictionaryKeyCallBacks,
           &kCFTypeDictionaryValueCallBacks);
CFDictionarySetValue(myDictionary, kCGPDFContextTitle, CFSTR("My PDF File"));
CFDictionarySetValue(myDictionary, kCGPDFContextCreator, CFSTR("My Name"));
// Create our PDF Context with the CFURL, the CGRect we provide, and the above defined dictionary
pdfContext = CGPDFContextCreateWithURL (url, &pageRect, myDictionary);
// Cleanup our mess
CFRelease(myDictionary);
CFRelease(url);
//CGContextSetLineCap(pdfContext, kCGLineCapButt);

// Done creating our PDF Context, now it's time to draw to it

// Starts our first page
//for(int i =0;i<2;i++)
//{ 
CGContextBeginPage (pdfContext, &pageRect);

 //CGContextRef pdfContext1;

//CGContextBeginPage (pdfContext, &pageRect);
//}
// Draws a black rectangle around the page inset by 50 on all sides
CGContextStrokeRect(pdfContext, CGRectMake(50, 50, 500,700));



CGContextShowTextAtPoint (pdfContext, 60, 699, text, strlen(text));
// End text

// We are done drawing to this page, let's end it
// We could add as many pages as we wanted using CGContextBeginPage/CGContextEndPage
CGContextEndPage (pdfContext);
// cpde to draw a new page

// CGContextBeginPage (pdfContext, &pageRect); // We are done with our context now, so we release it CGContextRelease (pdfContext); }

thanks balraj verma

A: 

I'm sorry, I'm not very familiar with the PDF stuff, so this may not be very helpful.

I have a small, not-yet-published, rough PDF application, and I do the drawing with this (simplified a bit):

CGPDFPageRef page = CGPDFDocumentGetPage(pdf, currentPage);
CGContextSaveGState(context);
CGAffineTransform pdfTransform = CGPDFPageGetDrawingTransform(page, kCGPDFCropBox, bounds, 0, true);
CGContextConcatCTM(context, pdfTransform);
CGContextDrawPDFPage(context, page);
CGContextRestoreGState(context);

I don't see a CGContextDrawPDFPage anywhere in your code. Are we using two different techniques, did you forget to include part of your code, or something else?

Amagrammer