Изменение содержания страницы в формате PDF с использованием target-c - PullRequest
3 голосов
/ 06 января 2012

Я хотел заменить содержимое страницы в формате PDF. Я сделал это с помощью следующего кода,

-(void)modifyPdf:(NSString *)pdfPath atPage:(int)_page
{
NSURL* url = [NSURL fileURLWithPath:pdfPath];

CGPDFDocumentRef document = CGPDFDocumentCreateWithURL ((CFURLRef) url);

CGRect paperSize = CGPDFPageGetBoxRect(CGPDFDocumentGetPage (document, 1), kCGPDFMediaBox);
UIGraphicsBeginPDFContextToFile(pdfPath, paperSize, nil);

UIGraphicsBeginPDFPageWithInfo(paperSize, nil);

CGContextRef currentContext = UIGraphicsGetCurrentContext();

CGContextTranslateCTM(currentContext, 0, paperSize.size.height);
CGContextScaleCTM(currentContext, 1.0, -1.0); 

CGPDFPageRef page = CGPDFDocumentGetPage (document, _page);

CGContextDrawPDFPage (currentContext, page);

CGContextDrawImage(currentContext, CGRectMake(0, 0, 100, 100), [UIImage imageNamed:@"0_0_0.png"].CGImage);


UIGraphicsEndPDFContext();

CGPDFDocumentRelease(document);
document = nil;   
}

(добавляет изображение на указанной странице, может потребоваться нарисовать путь или текст).

Проблема, с которой я столкнулся, заключается в том, что измененный файл имеет только измененную страницу. Чтобы избежать этого я нарисовал все страницы. Но производительность такого большого файла ужасна, как и ожидалось. Есть ли способ изменить только определенную страницу? Есть ли другой лучший способ сделать это? Пожалуйста, помогите.

...