iOS 创建 PDF 时添加链接

标签 ios pdf hyperlink pdf-generation

我正在 iOS 中使用 UIGraphicsBeginPDFContextToFile 创建 PDF,我想在其中添加指向其他页面以及其他网站的 URL 链接。下面是代码:这里 pdfObj 是一个自定义类,它将文本绘制为 PDF。成功创建 PDF 后,如果我单击“转到第 1 章”和“转到 URL”区域,则不会发生任何情况

UIGraphicsBeginPDFContextToFile(documentDirectoryFilename, CGRectZero, nil);
UIGraphicsBeginPDFPage();

//Page 1
UIGraphicsAddPDFContextDestinationAtPoint(@"Chapter1", CGPointMake(0, 0));
//other draw pdf data....

//Page 2
UIGraphicsBeginPDFPage();
//other draw pdf data....
[pdfObj addHeaderText:@"Go to Chapter 1" atFrame:CGRectMake(50, 50, 200, 44)];
UIGraphicsSetPDFContextDestinationForRect(@"Chapter1", CGRectMake(50, 50, 200, 44));

[pdfObj addHeaderText:@"Go to URL" atFrame:CGRectMake(550, 550, 200, 44)];
UIGraphicsSetPDFContextURLForRect([NSURL urlWithString:@"http://www.myURL.com"], CGRectMake(550, 550, 200, 44));

UIGraphicsEndPDFContext();

请让我知道我在这里犯了什么错误

最佳答案

检查此问题的答案是否有效:Embed hyperlink in PDF using Core Graphics on iOS

- (void) drawTextLink:(NSString *) text inFrame:(CGRect) frameRect 
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGAffineTransform ctm = CGContextGetCTM(context);

    // Translate the origin to the bottom left.
    // Notice that 842 is the size of the PDF page. 
    CGAffineTransformTranslate(ctm, 0.0, 842);

    // Flip the handedness of the coordinate system back to right handed.
    CGAffineTransformScale(ctm, 1.0, -1.0);

    // Convert the update rectangle to the new coordiante system.
    CGRect xformRect = CGRectApplyAffineTransform(frameRect, ctm);

    NSURL *url = [NSURL URLWithString:text];        
    UIGraphicsSetPDFContextURLForRect( url, xformRect );

    CGContextSaveGState(context);
    NSDictionary *attributesDict;
    NSMutableAttributedString *attString;

    NSNumber *underline = [NSNumber numberWithInt:NSUnderlineStyleSingle];
    attributesDict = @{NSUnderlineStyleAttributeName : underline, NSForegroundColorAttributeName : [UIColor blueColor]};
    attString = [[NSMutableAttributedString alloc] initWithString:url.absoluteString attributes:attributesDict];

    [attString drawInRect:frameRect];

    CGContextRestoreGState(context);
}

关于iOS 创建 PDF 时添加链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22326745/

相关文章:

Android:ListView 中的 HTML 链接 - 突出显示问题

ios - UIView 使用少量对象进行动画处理

ios - UIView 没有名为 'setTranslatesAutoresizingMaskIntoConstraints' 的成员

java - pdfBox - 签名有效性复选标记在 Acrobat reader 中不可见

javascript - PDF.js 在固定宽度上缩放 PDF

html - 如何使按钮旁边的图像链接内联?

ios - Metal 崩溃 - CVMetalTextureCacheCreateTextureFromImage

ios - 添加约束后 View 及其 subview 消失

Python - trml2pdf 生成空白 PDF

android - 有没有办法在 Android 中让 WebView 自动链接 URL 和电话号码?