【问题标题】:Displaying pdf files using the PDFKit interface使用 PDFKit 界面显示 pdf 文件
【发布时间】:2016-11-25 20:35:26
【问题描述】:

我正在使用 Mac OS 10.12,并且有一个使用 PDFKit 界面显示 pdf 文件的应用程序。 但是我遇到了以下问题

在原始操作系统中将 pdf 文档设置为 PDFView,例如OS10.11,会调用PDFView->drawPage()函数,OS10.12不调用该函数;

PDFView can't draw pdf annotation in OS10.12;

将不胜感激上述解决方案

【问题讨论】:

    标签: cocoa pdf macos-sierra pdfview pdf-annotations


    【解决方案1】:

    我认为这要么是一个直接的错误,要么是一个尚未记录的 API 更改。我将此记录为错误 (27666426),现在可以看到它被标记为打开的副本 (27668895)。

    请注意,在 10.12 Beta 6 中,-drawWithBox:toContext: 被调用以代替现已弃用的 -drawWithBox:。请注意,所有绘图也需要使用传入的上下文。

    更新:

    然而,10.12 发布后,事情似乎并不那么简单。我发现我的 PDF 视图打印(在 10.11 上从 -drawWithBox: 和 10.12+ 上从 -drawWithBox:toContext: 驱动)已损坏。

    通过汇编程序我可以看到 10.12 在打印时现在调用 -drawWithBox:inContext: 而不是 -drawWithBox:toContext:-drawWithBox:(就像 10.11 上的情况一样)。 inContext: 选择器似乎是 around a while

    似乎在 10.9 - 10.12 上适用于屏幕和打印渲染的唯一解决方案是使用未记录的 -drawWithBox:inContext:

    【讨论】:

    • 现在最新的os10.12操作系统,可以显示PDF注释,但是现在我还是有问题,我之前在PDFView->mouseDragged中记录了坐标信息,然后会自动调用PDFView- >drawPage 函数,这个函数我会绘制 NSBezierPath 曲线来确定动态标注的边界。但是现在在mouseDragged 的​​过程中并没有被调用drawPage:toContext 函数。我使用的刷新方法仍然没有调用drawPage:toContext。想知道如何调用这个函数。非常感谢您的帮助。
    • 对不起。我不使用注释,我只是直接在视图上绘制。您是否查看过skim 如何处理注释?我知道他们在 10.12 遇到了一些问题。
    • 我也遇到了这个问题。我发现当我放大或缩小时,注释会显示出来。但我不知道如何让它动态显示。看来 SetNeedsDisplay 不起作用。
    • 有一个新的PDFAnnotation方法- (instancetype)initWithDictionary:(NSDictionary *)dictionary forPage:(PDFPage *)page;。可能值得一试。
    • 查看上面的更新以及cocoabuilder.com/archive/cocoa/…
    猜你喜欢
    • 1970-01-01
    • 2011-07-06
    • 2019-11-13
    • 1970-01-01
    • 2011-08-31
    • 2014-05-05
    • 2012-02-22
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多