Аннотировать PDF в iPhone SDK
Мне удалось реализовать очень простую программу просмотра PDF в моем приложении, но мне было интересно, можно ли добавить аннотации в PDF. Я просмотрел документы SDK, но ничего не нашел. У меня есть 2 вопроса на самом деле:
- Можно ли сделать это?
- Каков наилучший подход?
- Есть ли рамки или библиотека, которые я могу включить, чтобы помочь с этим?
Благодарю.
3 ответа
Вы можете сделать аннотацию, прочитав страницу PDF, нарисовав ее в новом графическом контексте PDF, а затем добавив дополнительный контент в этот графический контекст. Вот некоторый код, который добавляет слова "Пример аннотации" в позиции (100.0,100.0) к существующему PDF. Метод getPDFFileName возвращает путь к исходному PD. getTempPDFFileName возвращает путь к новому PDF, который является оригиналом плюс аннотация.
Чтобы варьировать аннотации, просто добавьте больше кода для рисования вместо drawInRect:withFont: метод. См. Руководство по рисованию и печати для iOS для получения дополнительной информации о том, как это сделать.
- (void) exampleAnnotation;
{
NSURL* url = [NSURL fileURLWithPath:[self getPDFFileName]];
CGPDFDocumentRef document = CGPDFDocumentCreateWithURL ((CFURLRef) url);// 2
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);
UIGraphicsBeginPDFContextToFile([self getTempPDFFileName], paperSize, nil);
UIGraphicsBeginPDFPageWithInfo(paperSize, nil);
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);
[@"Example annotation" drawInRect:CGRectMake(100.0, 100.0, 200.0, 40.0) withFont:[UIFont systemFontOfSize:18.0]];
UIGraphicsEndPDFContext();
CGPDFDocumentRelease (document);
}
Я работаю над этим и создал проект GitHub. Пожалуйста, проверьте это здесь.
Я не думаю PDFAnnotation
или PDFKit были перенесены на iPhone с рабочего стола.... вероятно, это отличный повод, чтобы подать радар. Тем не менее, Хару может помочь тебе.