一个PDF的基本构建块是Documents本身。Documents通常作为文件存储在磁盘上。 作为文件版本,可以支持元数据标记如作者,创建日期,等等。 一个文件可以加密,需要密码才能查看它。两级加密存在:

  • 用户级加密:如果用户成功地获得用户级权限,他或她可以查看文档,但可以限制打印或复制文档。
  • 所有者级别加密:获得所有者级别权限的用户可以查看文档并具有完全使用权限。 许多加密的PDF文件有一个“dummy”的用户密码为空字符串。大多数PDF文档解析器(包括PDF套件)自动尝试空字符串密码加密后的文件,如果成功,只显示文档。因此,在技术上加密的文档不一定提示用户口令。

PDF页面

一个PDF文档由若干页面组成。这个页面看起来就像一本物理书页面显示在屏幕上。同时PDF页面可以包含超链接注释。页面可以支持裁剪,还有其他使用功能:例如隐藏多余的部分(如注册标记)。

view VS page空间坐标

页面上的大多数对象都是在page空间中指定的,而不是在view空间中。 也就是说,坐标系统是在点(每英寸72点),坐标原点在page左侧底部,而不是viewpage空间不关心缩放,显示模式等等。一个有bounds的item,比如说32points,保留这些界限,无论显示大小。 图view和page坐标系比较

PDFView class包含几个转换方法,将坐标系统从view spacepage space,反之亦然。

PDF Kit Classes

PDF Kit套件提供了几个不同功能的PDFViewPDFSelection除外,这些大致对应着各个对象在PDF格式的规范需求。

PDFView Class

PDFView类,就好比Web工具包的WebView类,源于Application Kit中的NSView类。在项目开发中,你可以使用Interface Builder轻松拖动一个PDFView对象放在一个window中。从/Developer/Extras/Palettes/PDFKit.palette得到调色板。 PDFView可能是PDF Kit中唯一个需要你自定义的的类。在APP中显示PDF数据,允许用户选择文档内容和导航浏览PDF文档,设置缩放级别,复制文本内容到剪贴板。用户可以拖放PDF文档到PDFViewPDFView能通过调用其他PDF实用类来实现其大部分功能。如果要添加特殊功能,则需要用户自定义实用类的子类来扩展其特殊功能。 Utility classes as used by PDFView

PDF Kit Utility Classes

PDF套件工具类提供一种混合的Foundation-likeApplication Kit-like的行为。他们有类似的NSString类NSString Additions方法。这些类都系橙自NSObject

PDF Document

PDFDocumentPDF kit工具类中重要类,代表着PDF data或PDF文件。其他实用工具类一般都在PDFDocument方法中的实例化。是PDFPagePDFOutline;或相关支持操作:PDFSelectionPDFDestination。 你PDFDocument对象初始化,需要一个PDF数据或一个指向PDF文件的URL。实例化之后就可以访问页数添加删除页面,对所选内容为NSString对象进行查找分析

PDFPage

PDFPage代表一个PDF文档的页面。你的应用程序获取一个PDFPage对象必须通过从PDFDocument对象来实例化。PDFPage对象是用户所看到的屏幕,和一个view可以同时显示多个page。你可以使用PDFPage把PDF文档内容渲染到屏幕上,添加注释计数字符串,定义选择,获取一个page中的文本内容作为NSString对象NSAttributedString对象

PDFOutline

除了显示实际的文件内容,PDF Kit也能呈现PDFOutline信息,前提是PDF文档中存在目录结构。在目录结构中,一个PDFOutline对象代表一个父目录子目录。 目录是由一个层次的PDFOutline对象组层。顶层是根目录对象,它仅作为其他目录对象的容器。用户的根目录是不可见的。

PDFSelection

一个PDFSelection对象包含一个跨PDF文档中文本。你不要直接创建PDFSelectionPDFSelection对象是作为返回值来实例化的。例如:通过调用PDFPagePDFDocument对象中的selection方法,并从成功搜索的返回值来实例化PDFSelection对象。 在同时显示多个PDFPagePDFView中,PDFSelection可以是不连续的,或两者兼具的。例如,可以选择在一个单柱连续两列页面的文本。可以在任何方向从一个选择区, 合并选择区, 或扩展选择区中得到文本和网页覆盖。

PDFAnnotation

一个PDFAnnotation对象可以表示多种内容以外,在一个PDF文件的主要文本内容:链接、表单元素,突出圈子,等等。每个注释与页面上的特定位置相关,并且可以与用户提供交互性。 PDFAnnotation是如图所示的具体类的抽象类。各种具体类代表PDF Kit支持的注释类型。

PDFBorder

PDFBorder对象封装的拉伸PDFAnnotation对象边框的行为。可以定义一个PDF的bord线的风格属性(例如,固体,破灭,或斜面),bord线的宽度,和圆角半径。

过期:从/Developer/Extras/Palettes/PDFKit.palette得到调色板。 Here’s what Apple says about it: {% blockquote 老文档 http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Conceptual/PDFKitGuide/PDFKit_Prog_Tasks/PDFKit_Prog_Tasks.html PDFKit_Prog_Tasks %} “To add the PDFKit palette in Interface Builder, select the Palettes tab in the Preferences panel. Click the Add button, navigate to the /Developer/Extras/Palettes folder, and select the PDFKit palette. Next, select the Customize Toolbar menu item in the Tools/Palettes menu and drag the PDFKit palette to the toolbar to make it visible.” {% endblockquote %} So: there’s no Palettes tab anywhere in the Preferences panel and the Xcode Help return a blank when searching for it. There’s no PDFKit.palette file anywhere on my HD (says Spotlight). I guess these instructions are for an older version of XCode but it’s all Apple seemed to have on it…