首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iPhone SDK中注释PDF

在iPhone SDK中注释PDF
EN

Stack Overflow用户
提问于 2010-02-22 18:10:00
回答 3查看 13.6K关注 0票数 13

我已经在我的应用程序中实现了一个非常基本的PDF查看器,但是我想知道是否可以向PDF中添加注释。我已经查看了SDK文档,但没有发现任何东西。我有两个问题要问:

  1. 有可能这样做吗?
  2. 最好的方法是什么?
  3. 是否有一个框架或库,我可以包括,以协助这一点?

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-16 18:26:38

您可以通过读取PDF页面,将其绘制到新的PDF图形上下文中,然后将额外的内容绘制到该图形上下文中来进行注释。下面是一些代码,将“示例注释”添加到现有的PDF中(100.0100.0)。方法getPDFFileName返回原始PD的路径。getTempPDFFileName返回新PDF的路径,该路径是原始的,加上注释。

若要更改注释,只需添加更多的绘图代码,以代替drawInRect:withFont:方法。有关如何做到这一点的更多信息,请参见iOS的绘图和打印指南。

代码语言:javascript
复制
- (void) exampleAnnotation;
{
    NSURL* url = [NSURL fileURLWithPath:[self getPDFFileName]];

    CGPDFDocumentRef document = CGPDFDocumentCreateWithURL ((CFURLRef) url);// 2
    size_t count = CGPDFDocumentGetNumberOfPages (document);// 3

    if (count == 0)
    {
        NSLog(@"PDF needs at least one page");
        return;
    }

    CGRect paperSize = CGRectMake(0.0,0.0,595.28,841.89);

    UIGraphicsBeginPDFContextToFile([self getTempPDFFileName], paperSize, nil);

    UIGraphicsBeginPDFPageWithInfo(paperSize, nil);

    CGContextRef currentContext = UIGraphicsGetCurrentContext();

    // flip context so page is right way up
    CGContextTranslateCTM(currentContext, 0, paperSize.size.height);
    CGContextScaleCTM(currentContext, 1.0, -1.0); 

    CGPDFPageRef page = CGPDFDocumentGetPage (document, 1); // grab page 1 of the PDF 

    CGContextDrawPDFPage (currentContext, page); // draw page 1 into graphics context

     // flip context so annotations are right way up
    CGContextScaleCTM(currentContext, 1.0, -1.0);
    CGContextTranslateCTM(currentContext, 0, -paperSize.size.height);

    [@"Example annotation" drawInRect:CGRectMake(100.0, 100.0, 200.0, 40.0) withFont:[UIFont systemFontOfSize:18.0]];

    UIGraphicsEndPDFContext();

    CGPDFDocumentRelease (document);
}
票数 18
EN

Stack Overflow用户

发布于 2015-02-26 02:34:36

我正在从事这项工作,并创建了一个GitHub项目。请检查一下这里

票数 3
EN

Stack Overflow用户

发布于 2010-02-22 18:43:28

我不认为PDFAnnotation或PDFKit是从桌面移植到iPhone的.可能是发射雷达的一个很好的借口。然而,在此期间,哈鲁可能会帮助您渡过难关。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2313008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档