首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Iphone >

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

2012-12-15 
急!!!怎样在iOS中对PDF文件合成就是将一张图片粘贴到一个PDF文件上鼠标指示的位置,该怎样做?急![最优解释]

急!!!怎样在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);
    ....
}

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

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



晚安。
[其他解释]
太感谢了,以后要常向版主请教!

热点排行