How can I use the PoDoFo library for annotating PDFs on iOS?

前端 未结 2 1661
我在风中等你
我在风中等你 2021-01-06 02:57

I would like to annotate PDFs within an iOS application. I came across the PoDoFo library, but I\'m not sure how to use this in an iOS application.

Is it possible t

相关标签:
2条回答
  • 2021-01-06 03:42

    Please do something like this.

    + (void)createUTFAnnotationTextOnPage:(NSInteger)pageIndex 
                                      doc:(PdfDocument*)doc   // PdfMemDocument instance
                                     rect:(PdfRect)rect 
                                    title:(NSString*)title 
                                  content:(NSString*)content
                                    bOpen:(Boolean)bOpen
                                   colorR:(double)r 
                                   colorG:(double)g 
                                   colorB:(double)b {
        PdfPage* pPage = doc->GetPage(pageIndex);
        if (! pPage) {
            // couldn't get that page
            return;
        }
        PdfAnnotation* anno;
    
        anno = pPage->CreateAnnotation(ePdfAnnotation_Text, rect);
    
        PdfString sTitle(reinterpret_cast<const pdf_utf8*>([title UTF8String]));
        PdfString sContent(reinterpret_cast<const pdf_utf8*>([content UTF8String]));
    
        anno->SetTitle(sTitle);
        anno->SetContents(sContent);
        anno->SetColor(r, g, b);
        anno->SetOpen(bOpen);
    }
    
    // ----------- 
        PdfError::EnableDebug(false);   // or true
        NSString* inFile = [[NSBundle mainBundle] pathForResource:@"forTesting.pdf" ofType:nil];
        PoDoFo::PdfMemDocument doc( [inFile UTF8String] );
        [YourPodofoObj createUTFAnnotationTextOnPage:0 doc:&doc rect:PdfRect(50, 50, 50, 50) title:@"author by XX" content:@"I use it for test" bOpen:true colorR:1.0 colorG:.0 colorB:.0];
        doc.Write(OUT_PUT_PATH);
    
    0 讨论(0)
  • 2021-01-06 04:00

    The Above answer only provides you way to add Annotations (of Type FreeText etc). Generally you would want to create/Modify Fields. I normally use PdfTextFields, PdfCheckboxes, PdfSignature Field for this purpose. Hope that helps

        PdfMemDocument memDoc;
        PdfFileInputStream fileInputStream(filePath);
        char *srcBuffer = new char[fileInputStream.GetFileLength()];
        size_t srcLen = fileInputStream.GetFileLength();
        fileInputStream.Read(srcBuffer,srcLen);
    
    
        PdfOutputDevice outputDevice(filePath);
        outputDevice.Write(srcBuffer,srcLen);
        memDoc.Load(srcBuffer,srcLen);
    
        PdfTextField txtField  = PdfTextField( pPage,PdfRect(50, 50, 50, 50),&memDoc);
        txtField.SetFieldName(@"SomeUniqueName");
    
        memDoc.Write(&outputDevice);
        outputDevice.Flush();
    
    0 讨论(0)
提交回复
热议问题