PDF

表单数据格式(Forms Data Format,FDF)基于PDF,使用同样的句法和基本上一样的文件结构,但比PDF简单,自从FDF文档的主体由只有一个要求的对象组成开始。表单数据格式定义于PDF规格(自PDF 1.2起)。表单数据格式可在表单数据到服务器、接收响应和组合到交互式表单的时候被使用。还可以被用来导出表单数据到能被导回到相应的PDF交互式表单的单独的文件。从PDF 1.3开始,FDF可被用来定义用于从所应用的PDF文档分开的注释的容器。FDF通常封装X.509证书之类的信息、要求证书、设置目录、设置时间戳服务器和为网络传输嵌入PDF文件。
| type code = 'XFDF'
| uniform type =
| magic =
| owner = Adobe Systems
| released = (引用于PDF 1.5)
| latest release version = 3.0
| latest release date =
| genre =
| container for =
| contained by =
| extended from = PDF、FDF、XML
| extended to =
| standard = ISO 19444-1:2016
| free =
| url =
}}

XML表单数据格式(XFDF,XML Forms Data Format)是表单数据格式的XML版,但XFDF只执行FDF内含表单及注释的子集。FDF字典中的一些词条没有等价于XFDF的,像是状态、编码、JavaScript、页面关键字、嵌入式FDF、差异和目标。此外,XFDF不允许在基于已给定的数据的新页面大量生成或者添加;就像使用FDF文件的时候能被完成的一样。XFDF规格被引用于(但不包含于)PDF 1.5规格(及其以后的版本)。它被单独描述为“XML表单数据结构规格”(XML Forms Data Format Specification)。这个标准是ISO 32000-2的规范性参考资料。

XFDF可用以和FDF相等的方式,如提交表单数据给服务器,做出修订,然后返回,并且新表单数据被导入到交互式表单。它还可以用来导出表单数据到能被导回到相应的PDF交互式表单的单独的文件。

Adobe XML表单架构(XFA)
PDF 1.5格式中,Adobe Systems引入了新的、专有的表单格式,名为Adobe XML表单架构(XFA)。XFA 2.02引用在PDF 1.5规格(及以后的版本),但单独描述为《Adobe XML Forms Architecture (XFA) Specification》,有多个版本。XFA规格没有包括在ISO 32000-1 PDF 1.7并仅仅作为由Adobe创建的外部专有规格引用。在ISO 32000-2(PDF 2.0)当中被弃用。

Adobe XFA表单不与AcroForms兼容。Adobe Reader包含使用XFA表单的“禁用特性”,仅在打开只来自Adobe的可行的技术创建的PDF文档时激活。XFA Forms不兼容于Adobe Reader 6以前的版本。

XFA表单可创建或用作PDF文件或作为XDP()文件。PDF中XFA源的格式由XML数据包规格描述。

当PDF和XFA结合在一起,结果是任意页面中的XFA表单覆盖了PDF背景。这一架构有时被提作XFAF(XFA Foreground,XFA前景)。替代方法是直接在XFA(不用PDF,或者只用带有PDF标记的最小构造XFA的容器的“外挂PDF”,或用静态XFA表单的预渲染描述作为PDF)展开所有表单,包括样板文件。这有时被称为全XFA。带有一些XFA渲染功能支持的PDF软件的例子包括Adobe Reader for Windows、Linux、Mac OS X(但不是Adobe Reader Mobile for Android / iOS)或Nuance PDF Reader。

逻辑架构与可读性
“標籤”PDF(ISO 32000-1:2008 14.8)含有文档架构和语义信息,以允許可靠的文字抽取及使用。技术上來说,標籤PDF是建立在PDF 1.3 所引入的邏輯結構框架上,對於其格式的程-{}-式化使用 。標籤PDF定义了一组标准结构型別及屬性,允许页面内容(文本、图形和图片)之後被提取並再利用於其他用途。

當PDF文件僅供列印時,並不要求支援標籤PDF。因為此一特色是非必須的,且ISO 32000-1對於標籤PDF的規則相對模糊,所以在消費性裝置當中,包括,標籤PDF的支援參差不齊。

一個專門針對可讀性、為ISO標準之子集的PDF規格:PDF/UA於2012年首次發佈。

安全和签名
一份PDF文件可能以用于验证的担保或者数字签名加密。

由Acrobat PDF提供的标准担保以两种不同的方法及两种不同的密码组成,用户密码,加密文件并阻止开启;所有者密码,指定即使文档被解密的时候应该被限制的操作,可以包括:打印、从文档复制文本和图像、修饰文档,或者添加或删除文本注释和AcroForm字段。用户密码(控制开启)加密文件并要求以去除,难度取决于密码长度及加密算法——它可能非常安全(假设好的密码及加密算法没有已知的攻击手法)。所有者密码(控制操作)不加密文件,相反取决于客户端软件以遵循这些限制,并且不安全。所有者密码可以被许多通常可用的PDF破解软件移除,包括一些自由的在线服务。由此,文档作者放在PDF文档中的使用限制不安全,而且不能在一旦文件被散布时保证;这一危险在使用Adobe Acrobat软件以创建或编辑PDF文件应用这类限制的时候显现出来。

即使没有移除密码,许多免费或开源PDF阅读器忽略权限“保护”并允许用户打印或者做文本摘要的复制,就像文档没被密码保护限制一样。

一些解决方案像Adobe的LiveCycle Rights Management更强化信息权利管理的方式,不仅能限制谁能打开文档,而且以标准的安全处理程序做不到的方式可靠的执行权限。

使用权
从PDF 1.5起,使用权(UR)签名用来启用在一些PDF查看器应用中不是默认的附加的交互式特性。这一签名用来验证由真实的授权机构赋予的许可。例如,它可以允许用户:第一种是文档信息字典,一套像作者、标题、主题、创建及更新日期的关键字/值字段。这存储于可选的文件尾部。有一小组字段是有定义的,而且如果有需要,可以用附加的文本字段扩充。

后来在PDF 1.4中,对元数据流的支持被加入,用可扩展元数据平台(XMP)来添加像在其他文件格式那样的基于XML标准的可扩展的元数据。这允许元数据附加到文档中的任何字串流,诸如关于嵌入式插图的说明,以及整个文档(附加到文档目录),使用可扩展的纲要。

相关技术
Mars
Adobe曾探索基于XML的下一代PDF,代号Mars。

Mars的图形元素的格式有时简单地描述为SVG,但根据2007年11月的0.8版草案规格(§3 Mars SVG Support)这一格式实际上仅仅是接近于SVG:它同时包含SVG新增和移除的部分,因此一般不可被标准SVG工具查看或创建:一些东西在SVG查看器和Mars查看器之间看起来明显不同。

Adobe Systems于2008年停止开发Mars。

技术问题
扫描的文档
由扫描仪硬拷贝文档创建的PDF文件包含原始文本没有由相同的文档直接创建的PDF文件那样相同的架构。扫描的文档原本地包含了文档的图片,没有关于文本的信息。只要用户可以看到它只是另一个PDF文件,带有从其他任意地方来的不能区分的名称和扩展名;好的扫描仪或许会精确地视作与原生的PDF文件相同,即使是视觉上质量很差的文件,常常带有扭曲的页面,给出了其本性。然而,文件大小会明显不同,而且不能搜索文本。对于精确质量的扫描可以用带光学字符识别(OCR)的合适的软件识别文档中的文本,并嵌入文档中而使其可以检索,取决于OCR的准确性。

可读性
PDF文件可专门为让残疾人阅读而创建。PDF文件格式在使用中可以包含标签(XML)、替换文本、标题、音频描述等。置标PDF在PDF/A-1a规格中被要求。一些软件可以自动生成置标PDF,但这个特性不被默认启用。常见的螢幕閱讀器,包括JAWS、Window-Eyes、Hal和Kurzweil 1000及3000可以朗读置标PDF,就像Acrobat和Acrobat Reader后来的版本一样。此外,置标PDF可为有视觉障碍的读者重排和放大。问题仍存在于给旧版PDF和从扫描的文档生成的PDF加标记。这些情况下,可读性标记和重排就不可用,而且必须手动或用OCR技术处理。这些过程对于一些残疾人是达不到的。

对PDF可读性的一个重大挑战是PDF文档有三种不同的视图,取决于文档的创建,会和其他视图相矛盾。这些视图有:物理视图、标记视图和内容视图。物理视图可以显示和打印(多数人认为的PDF文档)。标记视图是屏幕阅读器和其他访问技术用来给有障碍的用户带来高质量导航和阅读体验的。内容视图基于PDF内容字串流中的对象的物理排列,并可能由不完全支持标记视图的软件显示,如Adobe Reader的Reflow特性。

基于ISO 32000-1的可阅读PDF国际标准PDF/UA在2012年以ISO 14289-1发布,并为可阅读PDF技术建立规范的语言。

病毒和漏洞
PDF附件带病毒最先发现于2001年。这种名为OUTLOOK.PDFWorm或Peachy的病毒,会通过Microsoft Outlook以附件的形式将自己发送至Adobe PDF文件。然后会用Adobe Acrobat将自身激活,但不会被Acrobat Reader激活。

随着时间推移,新的漏洞在Adobe Reader的多个版本被发现,促使企业发出安全性修复。其他PDF阅读器也容易受到影响。一个恶化的因素是PDF阅读器会被配置在网页嵌入PDF时候自动启动,为攻击带来了载体。如果恶意的网页包含一份利用PDF的漏洞感染的PDF文件,系统会无法抵抗,即使浏览器是安全的。其中一些漏洞是由于PDF标准允许PDF文档用JavaScript脚本指令的结果。在PDF阅读器中禁止执行JavaScript有助于缓解那些未来的漏洞,即使这不阻止PDF查看器其他部分的漏洞。安全专家称JavaScript对于PDF阅读器来说不是基本的,而且出于禁止JavaScript的安全保障胜过任何造成的兼容性问题。阻止PDF文件漏洞的一种方式是有本地或网络服务能在阅读前把文件转换成其他格式。

2010年3月30日安全专家Didier Stevens报告Adobe Reader和福昕阅读器有如果用户经询问允许启动时运行恶意可执行文件的漏洞。

使用限制和显示
PDF可能会被加密,以致查看或编辑内容时会要求输入密码。PDF参考书同时定义40位和128位加密,都运用RC4和MD5的复杂系统。PDF参考书还定义第三方可以制定他们自己的PDF加密系统的方式。

PDF文件或许还包含嵌入的DRM限制,提供限制复制、编辑或打印的进一步控制。复制、编辑或打印的限制取决于阅读软件遵循他们,因此他们提供的安全机制是有限的。

PDF参考书有面向最终用户概览的技术细节。就像HTML文件一样,PDF文件可以向网络服务器提交信息。这可以被用来追踪客户端PC的IP地址,这一过程被称作背景連線通訊。Acrobat Reader升级到7.0.5以后,用户会被提示“...via a dialogue box that the author of the file is auditing usage of the file, and be offered the option of continuing”。

Adobe通过LiveCycle安全服务器提供针对特定文档设置安全策略的方法。这可以包括要求用户认证并限制文档可被离线打开的时候可以被访问或者载入的时期。PDF文档一旦被绑定到策略服务器和指定策略,这一策略可以被所有者更改或撤销。这一策略控制文档,否则就是“在自然状态下”。每个文档打开或关闭事件也可以被策略服务器追踪。策略服务器可以由个人设置,或Adobe通过Adobe在线服务提供公共服务。和其他DRM形式一样,依附这些策略和限制有可能会,也有可能不会被阅读器软件执行。

默认的显示设置
PDF文档可以包含显示设置,包括页面显示输出和缩放级别。打开文档的时候Adobe Reader用这些设置去替换用户的默认设置。免费的Adobe Reader不能移除这类限制。

内容
PDF文件通常混合了矢量图形、文本和位图。PDF的基本内容包括:

  • 文本存储为内容字符串(就是不是文本本身)
  • 由图形和线条组成的用于说明和设计的矢量图形
  • 由相片和其他类型的图片组成的位图

在近期PDF标准修订中,PDF文档还支持链接(文档内部或网页)、表单、JavaScript(可通过Acrobat 3.0的插件启用),或者其他任意类型的能用插件控制的可嵌入内容。

PDF 1.6支持互动式3D文档嵌入PDF——3D绘图可用U3D或PRC及其他多种格式嵌入。

在电脑屏幕上看起来相似的两个PDF文件有可能大小不同。例如,一个高分辨率位图比低分辨率的占更多的存储空间。通常更高的分辨率更适宜打印文档而不是显示于屏幕。其他可能影响文件大小的可能有嵌入全部字体,尤其是东亚字体,以及将文字存为图片。

软件
有许多软件选项用来创建PDF,包括内建于Mac OS X及多数Linux发行版、LibreOffice、Microsoft Office 2016、WordPerfect 9、Scribus许多适用于Microsoft Windows的PDF打印驱动、pdfTeX排版系统、DocBook PDF工具、围绕Ghostscript及Adobe Acrobat本身开发的应用以及Adobe FrameMaker的PDF排印功能。Google的在线办公套件Google Docs也允许上传、保存为PDF。

光栅图像处理器(RIPs)用于转换PDF文件为位图格式以适应于成像在纸上及其他媒体的打印机、数字生产用印刷机以及一种被称为栅格化的进程中的印前。有直接处理PDF能力的RIP包括在出自Adobe Systems和Jaws的Adobe PDF排印引擎与出自Global Graphics的Harlequin RIP当中。

有一些软件可以直接创建空白的PDF文档,例如Adobe官方的Adobe Acrobat DC,但是通常意义不大;因为Adobe Acrobat并不擅长于对文档进行排版。

因为PDF具有完美展现文件原貌的功能,因此市面上也有一部分软件并非为PDF而生,但是通过一些开发库或者图形绘制框架也具有PDF的导出功能。

一些用于编辑PDF文件的特殊软件,通过受很多限制并且比创建和编辑标准可编辑文档格式更昂贵的选择。Inkscape 0.46及以后版本允许通过Poppler加入中间的转译步骤编辑PDF。

Adobe Acrobat DC允许用户对一个未加密的PDF文件或者具有相关权限用户对PDF文件进行编辑,同时还自带了OCR识别、注释、表单预备、合并,数字签名等十分完善的功能

Serif PagePlus可打开、编辑和保存已有的PDF文档,以及软件包中创建的文档的发布。

Microsoft Office Word也支援打开、编辑和保存已有的PDF文档的編輯功能。

Enfocus PitStop Pro,Acrobat的插件,允许PDF文件的手动和自动编辑,同时免费的Enfocus Browser可以使编辑PDF的低级别架构成为可能。

大多数的文件经过编译系统后默认输出格式为PDF文件

注释
Adobe Acrobat是允许用户给已创建的PDF文件注释、高亮和添加笔记的专有软件的一个案例。作为自由软件可用的(GNU通用公共许可协议许可下)一个UNIX应用是PDFedit。另一个GPL授权的原生UNIX应用是Xournal。Xournal允许以不同的字体和颜色注释,以及用于为文本或段落的快速下划及高亮线条的规则。Xournal还有一个用于方形、矩形和圆形的形状识别工具。Xournal中的注释可以被移动、复制或粘贴。免费软件福昕阅读器,适用于Microsoft Windows,允许注释文档。Tracker Software的PDF-XChange Viewer的免费版允许不受限制的注释和标记。苹果Mac OS X内置PDF阅读器Preview也可以像免费软件Skim那样注释,后者支持与LaTeX、SyncTeX和PDFSync集成,以及与BibDesk参考文献管理软件集成。免费软件Qiqqa可以创建总结所有注释的报告,而且笔记通过他们的PDF库做出来。

对于移动版的注释,iAnnotate PDF(来自Branchfire)和GoodReader(来自Aji)允许对PDF注释以及导出注释的摘要。

还有一些支持注释PDF及其他文档格式web注释系统,如A.nnotate、crocodoc、WebNotes。

在PDF被期望拥有纸质文档的全部功能的地方,墨水注释会被要求。一些接受来自鼠标的墨水输入的程序可能不足以对应平板上的手写输入。PC上已有的解决方案包括PDF Annotator和Qiqqa。

其他
PDF软件作为在线服务的例子包括用于查看和存储的Scribd、用于在线编辑的Pdfvue和用于PDF转换的Zamzar。

1993年出自Global Graphics的Jaws位图处理器成为第一个不用转换到其他格式原生产生PDF的销售用的印前RIP。公司在1997年给他们的Harlequin RIP发布了一个有同样兼容性的更新。

爱克发-吉华1997年推介并出售Apogee,第一个基于PDF的印前工作流系统。

许多商业的胶印机接受递交发布就绪的PDF文件作为印刷来源,特别是PDF/X-1a子集和相同的变种。发布就绪的PDF文件的提交是对接收已收集本地文件工作的不确定性需求的替代。

PDF被选为Mac OS X的“本地”格式,取代早期Mac OS的格式。Quartz图形层的图像模式基于Display PostScript和PDF共有的模式,产生了昵称Display PDF。Preview应用与Safari网页浏览器2.0及以后版本都可以显示PDF文件。对PDF的系统级支持使得Mac OS X应用可以自动创建PDF文档,给它们提供OS标准的打印架构支持。文件可以按文件标头输出为PDF 1.3格式。在Mac OS X 10.0到10.3版截图时,图像也可以截取为PDF;后来的版本保存截图为PNG文件,虽然这一行为若有需要可以重新设置为PDF。

一些桌面打印机也支持直接打印PDF,可以不用额外的辅助生成PDF数据。目前,所有PDF兼容打印机也支持PostScript,但多数PostScript打印机不直接支持PDF打印。

自由软件基金会曾认为他们的一个高优先级计划“提供自由、高质量和全功能的一组软件库及程序实现PDF文件格式及ISO 32000标准的相关技术”。而在2011年,GNU PDF计划从“高优先级”列表中被移除,因为Poppler库的完善,激励了像Evince之类的应用与GNOME桌面环境的广泛应用。Poppler基于Xpdf代码。PDF軟體列表亦列出可用的商业开发用软件库。

Apache软件基金会的计划是一款用于处理PDF文档的开放源代码Java库。PDFBox以Apache许可证授权发布。

一个名为[https://github.com/devongovett Devon Govett]的Adobe员工在GitHub上开源了一款用于JavaScript的PDF操作库[https://github.com/foliojs/pdfkit PDFKit]

Apple开发者早期使用Quartz的[https://developer.apple.com/documentation/coregraphics/cgpdfdocument CGPDFDocument]来绘制一个PDF文档,但是因为使用较为底层的图形库绘制PDF文档和查看十分麻烦,因此在2017年的WWDC大会上Apple引进了[https://developer.apple.com/documentation/pdfkit/ PDFKit] 来让开发者在Apple产品的操作系统上让自己的App支持绘制,查看,标注PDF等等功能

参考文献
参见
*XML纸张规范
*PostScript
*DjVu
*PDF/A
*PDF軟體列表

外部链接
*Adobe PDF官方介绍:[https://acrobat.adobe.com/tw/zh-Hant/why-adobe/about-adobe-pdf.html 什麽是PDF?Adobe可攜式文件格式]

*善用佳软:[http://xbeta.info/pdf-software.htm 全面接触PDF:最好用的PDF软件汇总]

评论 (0)

  • 还没有评论,来抢沙发吧。