当前位置: 代码迷 >> Iphone >> 急怎的在iOS中对PDF文件合成
  详细解决方案

急怎的在iOS中对PDF文件合成

热度:98   发布时间:2016-04-25 06:14:56.0
急!!!怎样在iOS中对PDF文件合成
就是将一张图片粘贴到一个PDF文件上鼠标指示的位置,该怎样做?急!
------最佳解决方案--------------------
看起来事将一张图片粘帖过去,实际上这个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);
    ....
}

------其他解决方案--------------------
至于你提到的鼠标指示的位置,这个数据好传递吧? 注意坐标系的转换。

另外,提个建议:以后发帖尽量勿用“急!!”这种字眼,多些耐心描述清楚自己的问题,做了何种尝试,希望什么样效果,卡在哪里。一行字描述的问题,一般很少有人愿意参与回答和交流的。
  相关解决方案