就是将一张图片粘贴到一个PDF文件上鼠标指示的位置,该怎样做?急!

解决方案 »

  1.   

    看起来事将一张图片粘帖过去,实际上这个PDF是需要重新绘制的。打开pdf的 PDFDocumentRef,再该页上绘制图片。拿到原PDFDocumentRef:CGPDFDocumentRef WQGetPDFDocumentRef(NSString *filename)
    {
        CFStringRef path;
        CFURLRef url;
        CGPDFDocumentRef document;
        size_t count;
        
        path = CFStringCreateWithCString (NULL, [filename UTF8String], kCFStringEncodingUTF8);
        url = CFURLCreateWithFileSystemPath (NULL, path, kCFURLPOSIXPathStyle, 0);
        
        CFRelease (path);
        document = CGPDFDocumentCreateWithURL (url);
        CFRelease(url);
        count = CGPDFDocumentGetNumberOfPages (document);
        if (count == 0) {
            printf("[%s] needs at least one page!\n", [filename UTF8String]);
            return NULL;
        }
        return document;
    }
    再绘制新的一页时,先绘制原页信息再绘制图片//给你封装个画图片上去的方法
    void drawPicture(CGContextRef myContext,CGRect rect, UIImage *image)
    {
        CFDataRef imgData = (__bridge CFDataRef)(UIImagePNGRepresentation(image));
        CGDataProviderRef dataProvider = CGDataProviderCreateWithCFData(imgData);
        CGImageRef imageRef = CGImageCreateWithPNGDataProvider(dataProvider,
                                                            NULL,
                                                            NO,
                                                            kCGRenderingIntentDefault);
        
        CGContextDrawImage(myContext, rect, imageRef);
        CGDataProviderRelease(dataProvider);
        CGImageRelease(imageRef);
    }void yourDrawPDFFunc(...)
    {
        ...
        //在BeginPage与EndPage之间绘制该页内容时调用
        CGPDFContextBeginPage (pdfContext, pageDictionary);
        //先绘制原页数据
        //再调用drawPicture
        CGPDFContextEndPage (pdfContext);
        ....
    }