Annota il PDF all’interno dell’SDK di iPhone

Sono riuscito a implementare un visualizzatore di PDF molto semplice all’interno della mia applicazione, ma mi chiedevo se fosse ansible aggiungere annotazioni al PDF. Ho esaminato i documenti dell’SDK, ma non ho trovato nulla. Ho due domande davvero:

  1. È ansible farlo?
  2. Qual è l’approccio migliore da prendere?
  3. C’è una struttura o una biblioteca che posso includere per aiutare con questo?

Grazie.

Puoi fare annotazioni leggendo in una pagina PDF, disegnandole in un nuovo contesto grafico PDF, quindi disegnando contenuti extra in quel contesto grafico. Ecco un codice che aggiunge le parole “Esempio di annotazione” nella posizione (100.0,100.0) a un PDF esistente. Il metodo getPDFFileName restituisce il percorso del PD originale. getTempPDFFileName restituisce il percorso del nuovo PDF, quello che è l’originale più l’annotazione.

Per variare le annotazioni, aggiungi altro codice di disegno al posto di drawInRect: withFont: method. Consulta la Guida alla stampa e al disegno per iOS per ulteriori informazioni su come farlo.

- (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); } 

Sto lavorando nel materiale e ho creato un progetto GitHub. Si prega di controllare qui .

Non credo che PDFAnnotation o PDFKit siano stati trasferiti su iPhone dal desktop … probabilmente una buona scusa per archiviare un radar . Tuttavia, Haru potrebbe farti passare nel frattempo.