【问题标题】:PDFAnnotationText is not displaying pop-up on 10.12PDFAnnotationText 在 10.12 上未显示弹出窗口
【发布时间】:2016-10-17 07:01:08
【问题描述】:

PDFAnnotationText 未在 macOS sierra 10.12.1 Beta (16B2548a) 上显示弹出窗口。 PDFAnnotationText 在 10.12 中已弃用,但新的 API 不会绘制注释。

旧 API:

// display the PDF document
    [m_pdfView setDocument: [self pdfDocument]];

- (PDFDocument *)pdfDocument {
    // create a page

    PDFDocument *document = [[PDFDocument alloc] initWithURL:[NSURL fileURLWithPath:@"/Users/test/Downloads/Eticket.pdf"]];
    PDFAnnotationText* result = [[PDFAnnotationText alloc] initWithBounds:NSMakeRect(100, 100, 40, 40)];
    result.color = [NSColor redColor];
    result.contents = @"Hello";
    result.iconType = kPDFTextAnnotationIconNote;
    // add it to the PDF document
    [[document pageAtIndex:0] addAnnotation:result];
    return document;
}

10.12 新 API:

- (PDFDocument *)pdfDocument {
    // create a page
    PDFDocument *document = [[PDFDocument alloc] initWithURL:[NSURL fileURLWithPath:@"/Users/test/Downloads/Eticket.pdf"]];

    NSMutableDictionary *popupDictionary = [[NSMutableDictionary alloc] init];

    [popupDictionary setObject:@"/Popup" forKey:kPDFAnnotationKey_Subtype];
    [popupDictionary setObject:[NSColor redColor] forKey:kPDFAnnotationKey_Color];
    [popupDictionary setObject:@"Hello" forKey:kPDFAnnotationKey_Contents];

    NSValue *rectValue = [NSValue valueWithRect:NSMakeRect(100, 100, 40, 40)];
    [popupDictionary setObject:rectValue forKey:kPDFAnnotationKey_Rect];

    PDFAnnotation *textAnnotation = [[PDFAnnotation alloc] initWithDictionary: popupDictionary forPage: [document pageAtIndex:0]];
    [[document pageAtIndex:0] addAnnotation:textAnnotation];    // add it to the PDF document
    return document;
}

我使用的是 Xcode 版本 8.0 (8A218a)。谁能帮帮我?

【问题讨论】:

    标签: objective-c cocoa annotations macos-sierra pdf-annotations


    【解决方案1】:

    我能够像这样创建一个简单的黑色字符串注释(在 Swift 3 中):

    let document = pdfView!.document
    let page = document!.page(at:0)
    let pageBounds = page!.bounds(for: PDFDisplayBox.artBox)
    let annotation = PDFAnnotation()
    annotation.setValue("/FreeText", forAnnotationKey: kPDFAnnotationKey_Subtype)
    annotation.setValue("HELLO WORLD", forAnnotationKey: kPDFAnnotationKey_Contents)
    annotation.setValue(NSColor.clear, forAnnotationKey: kPDFAnnotationKey_Color)
    annotation.bounds = NSRect(x:10, y:pageBounds.height-50, width:400, height:40)
    page!.addAnnotation(annotation)
    

    它使用 /FreeText,但如果您尝试这些值,它可能会对您有所帮助。仍然无法弄清楚如何更改文本的颜色。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-12
      • 1970-01-01
      • 1970-01-01
      • 2015-08-28
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      相关资源
      最近更新 更多