4

一点历史。在卓越的 Mac 矢量剪贴板风格是 PICT 的时代,程序可以将自己的数据插入 PICT。PICT 可以粘贴到另一个应用程序中。稍后,可以选择相同的绘图并将其放在剪贴板上,然后粘贴回原始程序。原始程序将提取其自定义数据并重新生成原始选择以进行实时编辑。

如今,主要的矢量剪贴板风格是 PDF,这是一种很好的格式,但 Apple 没有提供任何方法来使用 Apple 的 PDF 生成 API 将自定义数据放入 PDF。(如果我对此有误,请告诉我。)只是标准字符串,如标题、作者等。如果选择仅包含新应用程序,似乎通常不会费心将原始图形放回剪贴板的原始。此外,像 Word 这样的应用程序只保留粘贴的 PDF 的第一页。

我今天可以做些什么来从我的应用程序到任意其他应用程序进行“往返”编辑?除了这一点,Apple 和其他应用程序支持的理想解决方案是什么?它应该像 PICT 并且是嵌入在 PDF 中的标准自定义供应商 blob,还是应该有一个单独的供应商粘贴板类型,应用程序与可见图形保持平行?如果是前者,应该将 blob 保存在文档级别还是页面级别?我不想尝试任何 hacky,比如将 XML 插入作者字段。

4

4 回答 4

2

另一个技巧是使用 PDFKit 在其中添加带有额外数据的注释——我不确定目标程序是否会正确复制/粘贴这些注释,但值得一试。

参考

示例代码

-W

于 2009-10-26T08:55:31.140 回答
1

是否有任何理由为什么您的应用程序需要绘制的内容不能以 PDF 格式表示和隐藏?尽管在印前行业有很多关于 PDF 令人讨厌的限制的抱怨,但苹果与他们无关,事实上,它非常擅长让漂亮的图片出现在屏幕和纸上。

你在看哪个 API?

于 2009-10-13T23:32:03.343 回答
0

您需要更高级别的 API。与直接使用 Cocoa 相比,低级 CGPDF... API 对您的用处可能会小一些。(如果您不使用 Cocoa,上帝会帮助您。)您可以通过使用 Cocoa 中的标准 PDF 支持来完成您需要做的所有事情,并将选定的下拉菜单直接添加到 CoreGraphics 中以提高效率。(Cocoa 很棒,但在高效的图形绘制方面很烂。)

于 2009-11-03T03:58:42.107 回答
0

似乎有一个新的 API 将在 10.7 中可用(并且已经在 iOS 中可用),它允许包含任意(基于 XML)元数据。

void CGPDFContextAddDocumentMetadata (CGContextRef context, CFDataRef metadata) CG_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_0);

这将插入从根字典引用的压缩元数据流。我在这里要做的只是神奇地出现在 CGPDFContext.h 头文件中的 API 调用。显然,这并不能帮助我支持 10.7 之前的 OS X 版本,但它似乎是长期解决方案,同时我们可以破解 PDF 来匹配它。

这是我写的关于这个主题的博客文章。

于 2011-01-03T23:02:01.547 回答