【问题标题】:Create a PDF from an off screen NSView从屏幕外的 NSView 创建 PDF
【发布时间】:2013-11-06 16:53:43
【问题描述】:

我需要创建一个 pdf,其中包含我在屏幕外创建的多个不同 NSViewController's 的屏幕截图(因此用户看不到任何变化)。

我已经能够让它在添加到主NSWindow 的屏幕视图上工作,但到目前为止,如果不将视图添加到窗口,就无法获得相同的效果。我还尝试创建一个新的NSWindow,它的边界不在屏幕上,并将视图添加到其中,但它没有用。

我已经使用以下方法从屏幕外的NSView 中获得了NSImage:-

    NSBitmapImageRep *bitmapImageRep = [offScreenView bitmapImageRepForCachingDisplayInRect:offScreenView.bounds];
    [offScreenView cacheDisplayInRect:offScreenView.bounds toBitmapImageRep:bitmapImageRep];
    NSImage *image = [[NSImage alloc] initWithSize:bitmapImageRep.size];
    [image addRepresentation:bitmapImageRep];

但我无法从这个得到PDFDocument,因为它的图像表示不正确。有什么方法可以转换还是有另一种方法可以完全做到这一点?

谢谢, 马特

【问题讨论】:

    标签: macos cocoa


    【解决方案1】:

    这可能会让你开始:

    NSData  *pdfData=[offScreenView dataWithPDFInsideRect:[offScreenView frame]];
    

    【讨论】:

    • 谢谢,但我已经尝试过了。它会正确生成 pdf,但由于某种原因,视图的布局不正确,因为它在笔尖中,或者如果它设置为当前视图,而是视图的内容都放置在底部相互重叠。我已经检查过,框架肯定设置正确。不知道为什么会这样?
    • 你在使用自动布局吗?我想知道在屏幕上显示窗口时通常隐式调用的调用之一是否丢失,并且布局尚未完成。试试[offScreenView layout];
    • 不,我没有使用自动布局,调用布局并没有改变。这很奇怪,因为当我使用上面显示的 NSBitmapImageRep 方法时,布局是正确的。但我不能从那个到pdf!
    • 只是出于好奇:当您首先使用 NSBitmapImageRep,然后使用 -dataWithPDFInsideRect: 方法时会发生什么?
    • 没有变化,我输出的图像文件布局正确,但 pdf 不是。非常混乱!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多