iPhone,CGPDFDocument - PDF链接

时间:2010-07-15 15:23:10

标签: iphone cocoa-touch pdf hyperlink quartz-2d

我正在尝试使用基于QuartzDemo的CGPDFDocument编写一个简单的PDF查看器 有共同的渲染:

-(void)drawInContext:(CGContextRef)context
{
    // PDF page drawing expects a Lower-Left coordinate system, 
    // so we flip the coordinate system before we start drawing.
    CGContextTranslateCTM(context, 0.0, self.bounds.size.height);
    CGContextScaleCTM(context, 1.0, -1.0);

    // Grab the first PDF page
    CGPDFPageRef page = CGPDFDocumentGetPage(pdf, pageNumber);
    // We're about to modify the context CTM to draw the PDF page
    //  where we want it, so save the graphics state 
    // in case we want to do more drawing
    CGContextSaveGState(context);
    // CGPDFPageGetDrawingTransform provides an easy way 
    // to get the transform for a PDF page. It will scale down to fit, 
    // including any base rotations necessary to display the PDF page correctly. 
    CGAffineTransform pdfTransform = 
            CGPDFPageGetDrawingTransform(page, 
                    kCGPDFCropBox, self.bounds, 0, true);
    // And apply the transform.
    CGContextConcatCTM(context, pdfTransform);
    // Finally, we draw the page 
    // and restore the graphics state for further manipulations!
    CGContextDrawPDFPage(context, page);
    CGContextRestoreGState(context);
}

据我所知,它是唯一的绘图,所以所有结构导航或外出链接都应该手动处理(例如触摸事件)。

which will set URLcreate element with URL函数。

问题是:如何从某个PDF块获取外发链接网址?

谢谢!

类似的问题:
PDF hyperlinks on iPhone/iPad
How to access hyperlinks in PDF documents (iPhone)?

同上 iPhone SDK Dev GGroup
macRumors Forum
iPhone Dev SDK Forum
Dev Shed Forum
iphonedevbook.com

1 个答案:

答案 0 :(得分:17)

这是一个非常重要的问题,这就是为什么你找不到简单的答案。解决方案是:您必须解析PDF文档。好消息是,Apple提供的功能允许您这样做。坏消息是,它们是程序性的,男人,这是一个令人费解的混乱。

非常粗略的伪代码:

  • 使用CGPDFDocumentGetCatalog获取PDF的目录
  • 查看您正在寻找的页面的目录的“pages”元素(是的,它是字典,不是数组,而是嵌套的,所以这个简单的操作不那么简单)。 / LI>
  • 现在使用CGPDFDictionaryGetArray来获取“Annots”对象
  • 接下来,您需要遍历注释并查找“链接”对象。

Adob​​e已发布了document,其中列出了PDF规范。祝你好运!