开发者

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

开发者 https://www.devze.com 2023-04-10 17:05 出处:网络
I would like to annotate PDFs within an iOS application.开发者_JAVA百科I came across the PoDoFo library, but I\'m not sure how to use this in an iOS application.

I would like to annotate PDFs within an iOS application.开发者_JAVA百科 I came across the PoDoFo library, but I'm not sure how to use this in an iOS application.

Is it possible to use this library to annotate PDFs on iOS? If so, how?


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


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

精彩评论

暂无评论...
验证码 换一张
取 消