Adnotacja PDF w iPhone SDK

Udało mi się zaimplementować bardzo podstawową przeglądarkę PDF w mojej aplikacji, ale zastanawiałem się, czy można dodać adnotacje do pliku PDF. Przejrzałem dokumenty SDK, ale nic nie znalazłem. Mam 2 pytania:

    Czy to możliwe?
  1. Jakie jest najlepsze podejście do podjęcia?
  2. Czy Jest jakiś framework lub biblioteka, które mogę dołączyć, aby pomóc w tym?
Dzięki.
Author: Jack, 2010-02-22

3 answers

Można zrobić adnotację, czytając stronę PDF, rysując ją w nowym kontekście graficznym PDF, a następnie rysując dodatkową zawartość w tym kontekście graficznym. Oto kod, który dodaje słowa "przykładowa adnotacja" na pozycji (100.0,100.0) do istniejącego pliku PDF. Metoda getPDFFileName zwraca ścieżkę oryginalnego PD. getTempPDFFileName zwraca ścieżkę nowego pliku PDF, tę, która jest oryginałem oraz adnotację.

Aby zmienić adnotacje, wystarczy dodać więcej kodu rysunku w miejscu metody drawInRect: withFont:. Zobacz Przewodnik rysowania i drukowania dla systemu iOS, aby dowiedzieć się więcej, jak to zrobić.

- (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);
}
 18
Author: Obliquely,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-16 18:26:38

Pracuję nad tym i stworzyłem projekt GitHub. Proszę sprawdzić tutaj .

 3
Author: lazyprogram,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-26 09:01:16

Nie wydaje mi się, aby PDFAnnotation lub PDFKit zostały przeniesione na iPhone ' a z pulpitu.... prawdopodobnie świetny pretekst, aby złożyć radar . Jednakże, Haru może cię w międzyczasie zabrać.

 1
Author: slf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-22 19:07:23