【问题标题】:Can I programmatically add link annotation to PDFs?我可以以编程方式将链接注释添加到 PDF 吗?
【发布时间】:2013-05-03 08:03:41
【问题描述】:

我正在制作一个使用 UIWebView 显示 PDF 的 iPad 应用程序。我有一个 PDF,我想以编程方式添加链接。为简单起见,假设有 10 个段落。它们都有编号,并且有几行文字。我希望能够以某种方式添加到 PDF 的基本链接,这样如果第 2 段被触摸,那么我的 UIWebView 可以处理与第 2 段关联的请求。

我不知道 PDF 的内部结构是什么样的。我不知道如何将其扩展到数百页的每一段。但我想知道是否可以以某种方式将链接或 HTML 添加到 PDF,以便我可以使用我的应用程序对其进行操作。

谢谢!

需要明确的是,我正在 iOS 设备上查看此 PDF,但我认识到我的问题的解决方案可能与 Cocoa-touch 框架没有任何关系。我正在寻找任何可以让我在 PDF 的某些区域添加不可见链接的解决方案。

【问题讨论】:

    标签: ios parsing pdf annotations quartz-2d


    【解决方案1】:

    如果您想让 iPad 应用程序识别 pdf 中的文本字段、按钮、链接。您可以编辑实际的 pdf(您需要一个 Adob​​e Acrobat 版本)并将这些字段添加到 pdf 中。在您的 ios 代码中,使用以下内容解析 pdf 字段:

    在解析方法中:

        -(void)parse:(CGPDFPageRef)page
    {
        for (int i = 0; i < CGPDFArrayGetCount (annotations); i++)
    

    CGPDFArrayGetCount 返回 PDF 数组中的项目数。

    在循环中获取字段名:

        if (CGPDFDictionaryGetString(dict, "T", &stringRef))
        {
            char *s = (char *) CGPDFStringGetBytePtr(stringRef);
            fieldName = [NSString stringWithCString:s encoding:NSUTF8StringEncoding];
        }
    

    如果字段名称匹配,例如“button_1”或“hlink_3”,请检查您要执行的操作:

        if ([fieldName isEqualToString:@"hlink_3"])
    {
            // do whatever, example add a button where the field was
            UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
            button.frame = rect;
            [self addSubview:button];
    }
    

    还有很多其他内容,但这是总体思路。

    【讨论】:

    • 几年后回到这个答案,你从哪里得到rect?这是我现在遇到的主要问题,如何获取 PDF 中文本的位置,因为它与主视图的坐标系相关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 2023-03-19
    • 2018-06-19
    • 2011-12-21
    • 2013-06-17
    • 1970-01-01
    相关资源
    最近更新 更多