2012-07-03 4 views
0

Peut-on enregistrer le contenu tirés sur le pdf, comme pdf encore une fois, j'ai essayé de sauvegarder le pdf avec le contenu mais pas de chance, il enregistre avec blanc pdfpouvons-nous enregistrer le contenu dessiné sur le pdf comme un nouveau pdf? Xcode

le code:

- (void)drawRect:(CGRect)rect 
{ 
NSString *pathToPdfDoc = [[NSBundle mainBundle] pathForResource:@"myPDF" ofType:@"pdf"]; 
NSURL *pdfUrl = [NSURL fileURLWithPath:pathToPdfDoc]; 
document = CGPDFDocumentCreateWithURL((__bridge CFURLRef)pdfUrl); 
size_t count = CGPDFDocumentGetNumberOfPages (document);// 3 

if (count == 0) 
{ 
    NSLog(@"PDF needs at least one page"); 
    return; 
} 

CGRect paperSize = CGRectMake(0.0,0.0,595.28,841.89); 

CGContextRef currentContext = UIGraphicsGetCurrentContext(); 

// flip context so page is right way up 
CGContextTranslateCTM(currentContext, 0, paperSize.size.height); 
CGContextScaleCTM(currentContext, 1.0, -1.0); 

CGPDFPageRef page = CGPDFDocumentGetPage (document, 1); // grab page 1 of the PDF 

CGContextDrawPDFPage (currentContext, page); // draw page 1 into graphics context 

// flip context so annotations are right way up 
CGContextScaleCTM(currentContext, 1.0, -1.0); 
CGContextTranslateCTM(currentContext, 0, -paperSize.size.height); 

//////////////////////////////// 

[curImage drawAtPoint:CGPointMake(0, 0)]; 
CGPoint mid1 = midPoint(previousPoint1, previousPoint2); 
CGPoint mid2 = midPoint(currentPoint, previousPoint1); 

CGContextRef context = UIGraphicsGetCurrentContext(); 

[self.layer renderInContext:context]; 

CGContextMoveToPoint(context, mid1.x, mid1.y); 
CGContextAddQuadCurveToPoint(context, previousPoint1.x, previousPoint1.y, mid2.x, mid2.y); 
CGContextSetLineCap(context, kCGLineCapRound); 
CGContextSetLineWidth(context, self.lineWidth); 
CGContextSetStrokeColorWithColor(context, self.lineColor.CGColor); 

CGContextStrokePath(context); 

[super drawRect:rect]; 

// get a temprorary filename for this PDF 

NSString* path = [[NSBundle mainBundle] pathForResource:@"sampleData" ofType:@"plist"]; 
path = NSTemporaryDirectory(); 
self.pdfFilePath = [path stringByAppendingPathComponent:[NSString stringWithFormat:@"%d.pdf", [[NSDate date] timeIntervalSince1970] ]]; 

UIGraphicsBeginPDFContextToFile(@"test.pdf", paperSize, nil); 

[@"annotation" drawInRect:CGRectMake(100.0, 100.0, 200.0, 40.0) withFont:[UIFont systemFontOfSize:18.0]]; 
} 

Et j'ai essayé de fermer le PDF sur le bouton cliquez sur

- (IBAction)buttonPressed:(UIButton *)button { 
UIGraphicsEndPDFContext(); 
return; 
} 

Mais ça ne fonctionne pas.

Toute aide sera grandement appréciée, grâce à l'avance

Répondre

0

figured it out, voici la fonction pour créer le pdf avec le contenu dessiné ou annotés sur elle

-(void)createPDFfromUIView:(UIView*)aView saveToDocumentsWithFileName: (NSString*)aFilename 


{ 
// Creates a mutable data object for updating with binary data, like a byte array 
NSMutableData *pdfData = [NSMutableData data]; 

// Points the pdf converter to the mutable data object and to the UIView to be converted 
UIGraphicsBeginPDFContextToData(pdfData, aView.bounds, nil); 
UIGraphicsBeginPDFPage(); 
CGContextRef pdfContext = UIGraphicsGetCurrentContext(); 


// draws rect to the view and thus this is captured by UIGraphicsBeginPDFContextToData 


[aView.layer renderInContext:pdfContext]; 

// remove PDF rendering context 
UIGraphicsEndPDFContext(); 

// Retrieves the document directories from the iOS device 
NSArray* documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES); 

NSString* documentDirectory = [documentDirectories objectAtIndex:0]; 
NSString* documentDirectoryFilename = [documentDirectory stringByAppendingPathComponent:aFilename]; 

// instructs the mutable data object to write its context to a file on disk 
[pdfData writeToFile:documentDirectoryFilename atomically:YES]; 
NSLog(@"documentDirectoryFileName: %@",documentDirectory); 
} 

et a appelé la fonction sur cliquez sur le bouton.

Questions connexes