页面描述语言的并行处理的制作方法

文档序号:6478472阅读:118来源:国知局
专利名称:页面描述语言的并行处理的制作方法
技术领域
本发明涉及诸如打印系统、显示系统、PDL分析系统和PDL转换架构所请求的页面 描述语言(PDL)数据的高效处理方法和设备。
背景技术
PostScript语言是本领域普通技术人员公知的。PostScript是一种页面描述语 言(PDL),其包含一组丰富的用于描述打印作业中的页面的命令。PostScript和其他PDL, 诸如IPDS、PDF、PCL和PPML之间主要的不同是PostScript是一种编程语言。这就为表示 页面内容提供了能力和灵活性,但是灵活性的代价高昂;在一般的PostScript作业中,页 面并不易于解释。为了能正确地解释页面或者对PostScript作业进行有意义的变换就需 要PostScript解释器。Adobe可配置PostScript解释器(CPSI)是PostScript解释器的 一个例子,该解释器处理PostScript作业并且生成位图。Adobe Distiller是PostScript 解释器的另外一个例子,该解释器处理PostScr ipt作业并且生成PDF文件而不是位图。自从PostScript起始于1984年,全世界的工程师已经实施了众多的技术来克服 PostScript语言的某些已知的局限性。所述局限性包括a.速度限制,该限制阻碍了以打印机额定速度执行PostScript作业。b.无法按照在多个中央处理单元(CPU)上并行执行页面所要求的将PostScript 分割成单独的独立页面。c.无法按照高效有选择的、以页为范围地重新打印所要求的高效地打印选中的页面。为了理解性能问题的细节和普通实践的本质以及在下面公开的本发明,对典型的 PostScript解释器的说明是必须的。PostScript作业的处理由两个(典型地为重叠的) 阶段组成;解释阶段和输出阶段。—PostScript是一种解释型语言。和任何类型的解释器(例如Perl和Java) — 样,在解释期间PostScript作业被解析,并且内部作业结构被创建。该内部作业结构可以 是高级或低级图形对象链表(或树)、描述作业中页面的复杂状态或任何其他专有表示格 式。一在输出阶段期间,内部作业结构被处理,并且所请求的输出被创建。在打印系统 的情况中,呈现页面并且生成光栅(例如原始位图),并且典型地光栅被传递给打印机。在 AdobeDistiller的情况下,生成PDF文件。其他格式(诸如AFP/IPDS)也能够使用相似的 方式被生成。在历史上来说,就生成的数据量而言,解释被认为是一个轻阶段,而呈现则被认为 是一个重阶段。针对包括文字和图形的PostScript页面的典型源数据约为100KB。若以 600 X 600dpi (点每英寸)CMYK呈现,典型的原始位图页面约为100MB,是源数据的1000倍。这就是为什么自从PostScript语言的起始,为了跳过呈现,工程师们曾使用“向 空装置(null-device)写入”技术。这项技术在Adobe所有版本的“PostScript LanguageReference Manual (PostScript语言参考手册)”中有描述。根据该技术,可以通过设置空装置并且接着重新建立真实装置以恢复呈现来跳过对页面的呈现。该空装置方式典型地通 过再定义多个PostScript操作符(诸如show (显示)、image (图像)等)来扩张以此来进 一步减小解释开销。使用该空装置方式能够通过解释页面并跳过呈现来跳过页面。使用这 种跳过机制,本领域普通技术人员能够实施如图1中所描述的页面并行处理。图1显示了 4个处理器。在这种方法中,4个处理器中的每一个接收完整的 PostScript作业11,每个处理器跳过一些页面并且处理其他的页面。例如,第一处理器12 处理页面1、5、9···,而第二处理器13将处理页面2、6、10…,第三处理器14将处理页面3、7、 11···,并且第四处理器15将处理页面4、8、12…。显然,这个平常的负载均衡算法可以被改 进以考虑处理器的当前负载、页面的复杂性和其他特征。该负载均衡考虑可以被应用在后 面所有的附图中。很容易看到这种方式提供的增益。假设单CPU系统100花费100秒处理一个完整 的作业。进一步假设解释比呈现快3倍,这是相当合理的假设。根据这些假设,解释用时20 秒,而呈现用时80秒。回到图1,每个处理器同样花费20秒解释(每个处理器都需要解释 整个作业),但只用20秒呈现(每个处理器只需要呈现页面的四分之一)。在这种情况下, 处理整个作业用时40秒。这就获得了 2. 5倍的性能增益(100/4 = 2. 5)。图2显示了 8个处理器。使用分开的处理器,处理过程被分割为解释和呈现。解 释器22将经过解释的PostScript流发送到呈现器26,由此实现管线并行(除了上述页面 并行以外)。使用上述数字并考虑解释和呈现阶段被管线化(并行地运行),整个作业在近 似20秒内被处理。这样就获得了 5倍的性能增益(100/20 = 5)。图2中所示的方法对于在早期打印时代里解释时间相比于呈现时间来说可忽略 的情况是完全适当的。但是解释/呈现平衡从1984开始由于以下的因素被显著地改变了, 这些因素包括a)为了加速性能,各公司通过提供极其有效的呈现系统和特有的硬件解决方案着 重投资呈现技术。b)多CPU系统变得更加便宜。主流CPU技术的最近趋势是,现在一般的CPU都包 括多个和独立的CPU —样运转的处理核。在不久的未来还可以期待8核、16核和32核CPU。c)当今更多的作业都包括非常复杂的图形和大图像,这些图形和图像要求繁重的 解释。d)打印速度极大加快了,测量为超过IOOppm (页面每分钟),甚至超过lOOOppm。由于上面描述的因素,为了获得高引擎速度,对空装置的呈现,其中每个处理器解 释整个PostScript作业,变得不合适。换句话说,解释作为固有的有序处理成为打印系统 的瓶颈。例如,在图2中加入额外的处理器将不会提高性能,因为每个解释器需要同样用20 秒来解释作业。认识到图2中的多个解释器重复了每个作业,本领域普通技术人员能够将解释孤 立开并且将其转移到图3所示的单独的处理器中。在该图中,中央解释处理器32解释作业 PostScript 11,并且生成某包含独立页面33的内部作业结构(显示列表)。该独立页面 33的显示列表被发送到单个的呈现处理器34。这种方法的主要优势是,相比于图2所描述 的方法只需要5个CPU就能获得相同的性能。此外,使用更强大的CPU用于中央解释器处理器32能够稍微减小一点解释瓶颈。这种方法的一个严重缺点是它的复杂度,将PostScript处理器分成运行在分开 的结点上的独立解释器和呈现器是一个复杂的过程。其需要显著地改变代码并且需要使用 源代码来进行这种改变。这种方法的主要缺陷是解释器仍然是瓶颈。使用上面的例子中建 议的数字,增加呈现器处理器34的数量并不会提高性能。考虑到上面的描述,期望提供一种移除作为瓶颈的解释器的方法和设备,从而提 高系统的整体速度。还期望提供不要求更改解释器的方法和设备。对中央解释方法的已知变化是如图4所示的PDF方法。在该方法中,PS到PDF的转 换器42将PostScript (PS)作业11转换成PDF。所创建的PDF 43被PDF分配器44分配到 多个处理器45。可以使用大量可用的实用程序将PostScript转换成PDF。Adobe Distiller 可能是其中最著名的一种。也有大量的将PDF作业43分配到处理器45的方法,包括a)将整个PDF文件发送到所有的处理器。每个处理器被告知呈现哪些页面。b)PDF作业可以被转换成一系列单页面的PDF文件。这些单页面的PDF文件能够 被发送到处理器,从而每个处理器只接收被要求的PDF页面来呈现。c) PDF可以被转换成一系列单页面的PostScript文件。这些单页面的PostScript 文件能够被发送到处理器,从而每个处理器只接收被要求的PostScript页面来呈现。d)取代单PDF或PostScript页面,可以生成页面块并且页面块可以被分配到所要 求的处理器,从而降低单页面的潜在资源开销。作为变化,整个作业能够被分割为与处理器 数量相等数量的块(在本例子中为4块)。这些PDF方法是可行的处理并且在行业内是已知的。同时,它们都具有和上面讨 论过的“中央解释”方法相同的主要缺陷;由于PS-PDF转换器是PostScript解释器,所以 转换器就成为瓶颈。此外,已知转换成PDF会为对转换器增加额外的大量开销,从而产生一 个甚至更大的瓶颈。该瓶颈阻碍了通过增加额外的处理器来扩展系统。回到图4,取代将PostScript转换成PDF,采取其他的转换是可能的。例如, PostScript 转换成 PostScript、PostScript 转换成 AFP 或 PostScript 转换成 XPS。但是 由于所有这些转换都是PostScript解释器的实例,所以它们都具有和上面讨论过的“中央 解释”方法和“PDF方法”相同的主要缺点;转换器变成瓶颈,从而阻碍了通过增加额外的处 理器来扩展系统。考虑到上面的描述,期望提供将作为瓶颈的解释器移除的方法和设备,从而提高 系统的整体速度。此外期望提供避免将PostScript转换成PDF或其他语言的方法和设备。认识到和PostScript作业的无组织本质相关的这些问题,Adobe早在1986就出 版了 "Adobe Document Structuring ConventionsSpecification Version 1,,(文档结构 转换规范第一版,DSC规范)。最著名的DSC规范第三版在1992年出版。在该规范中有一 个独立的部分名为“并行打印”。在该部分中说明页面并行打印是符合DSC的PostScript 作业的目的之一。DSC规范定义了一组标签(tag),其允许对PS资源简单的解析和重组页面。此外, 它要求如果生成器输出“ % ! PS-Adobe-3. 0”,就保证该PostScript文件是符合DSC的。遗 憾的是,事实是几乎所有的主要PostScript生成器都插入“ % ! PS-Adobe-3. 0”,而这些文件很少是符合DSC的。然而,在实践中显示,通过解析DSC注释和针对生成器的模式可以成功地将大的 PostScript作业组分割成独立的页面。尽管这种处理是相当复杂的,但是自从1988开始多 家公司都已经成功地运用了这种方法。例如,多家公司,诸如Creo (Preps )和Farukh采 用这种方法进行拼版,这是比实现并行打印明显更加复杂的过程。这些公司不仅能够将由 多个主要供应商产生的PostScript转变成页面独立的PostScript,他们也能够将由不同 的应用程序生成的多个PostScript作业组合成一个拼版的PostScript作业,从而获得更 高水平的页面独立性。同时,打印系统有和拼版不同的要求a)期望打印系统比PostScript拼版软件更可靠。期望打印系统处理比拼版系统 大得多的PostScript作业组并且适度报告关于那些它使用DSC和模式识别方法不能处理 的作业。b)打印系统需要比拼版软件快很多。考虑到上面的描述,期望提供比现有基于DSC的系统显著地更可靠更快的方法和 系统。图5显示了一种作业并行方法。该方法致力于页面并行方法的许多复杂性和低效 率。在该方法中,多个处理器55并行地处理多个PostScript作业51。由于分开的解释和 分割没有固有的开销,该方法对于大的短作业组是非常高效的;当一个作业完成打印时另 一个作业被处理并且准备被打印。同时,这种方法不适合于大作业a)第一个作业并不受益于多处理器。b)作业处理器可能在长时间内用完页面存储器并空闲,等待打印机打印上一个作 业。对于非常长的PostScript作业,诸如在Creo VPS和其他PostScript语言中表述 的可变数据印刷(VDP)作业,情况会恶化。一个这种长作业包含超过100,000页并且运行 好几天。在这种情况下,作业并行方法将明确地导致只利用到一个处理器而剩下的处理器 都保持空闲。回到DSC符合性,非DSC符合的PostScript的主要问题是缺乏作业结构和页面独立性。a)缺乏作业结构意味着PostScript作业中的页面之间缺少精确的和易于识别的 边界。b)页面独立性意味着每个页面都可能包含难以识别的资源,预计这些资源在页面 范围之外维持。因此,可能会有疑问,为什么PostScript生成器不将所有的资源都移到作业头 中。答案是因为作业的产生需要两个操作,分析操作和输出操作。a)在分析过程中,为所请求的资源分析所有的页面。b)在输出操作过程中,资源被写入到作业头部分。只有在此之后才对独立的页面写入。因为应用程序高速生成页面是和打印机消耗页面同样重要的,并且考虑到在过去 PostScript生成器不要求页面独立性,这就明确了在PostScript作业中的页面互相依赖的原因。随着引入最新的PDL(诸如PPML),情况稍微有所改变。PPML是基于XML的VDP语 言,这意味着该语言是为了获得高打印速度而特别设计的。PPML是标准委员会PODi设计 的,该委员会包括所有主要的打印控制器生产商以及许多主要的文档生成公司。关于作业 结构,PPML通过要求强制XML标签来解决这个问题。该标准指出a) PPML作业由文档组组成b)文档组由多个文档组成c)文档由多个页面组成当涉及到页面结构时,PPML不解决页面互相依赖的问题。和PostScript页面一 样,PPML页面可能包含期望在页范围以外维持的资源。这是所有PODi成员做出的有意识的 决定,其指出需要以非常高的速度输出PPML页面,从而避免两次经过数据。作为结果,PPML 页面交插资源和数据,如同是BeginPagedata, resource, resource, data, data."(数据,资源,资源,数据)EndPage该PPML与PostScript的唯一的主要区别是,资源是容易地可识别的。对PPML作 业结构的理解将有助于理解现有的模式,并且理解本发明。本领域中其他的现有技术包括1. Agfa,第 5,652,711 号美国专利(Vennekens)。2. Electronics For Imaging, W0 04/110759 申请。3. Xerox,第 6,817,791 号美国专利(Klassen).第5,652,711号美国专利是宽专利,适用于包括PostScript的所有PDL。该专利 描述了用于并行处理PDL数据流的方法。该方法考虑了将打印作业定义为数据命令和控制 命令的组合的PDL数据流。数据命令描述必须由输出装置再生的数据,例如文字、图形和图 像,而控制命令描述数据如何被再生,并且可包括字体描述,页面部分、格式和覆盖。每个生 成的独立数据流段都包括数据命令,以描述包括在单个页面或区域中的图像,并且也包括 控制命令,以指示数据命令该如何被解释。PDL数据流被递交到主处理程序,该主处理程序将PDL数据流分割成独立的数据 流段,这些数据流段通过多个子处理转换成中间数据流部分。为了获取段独立性,每个段必 须知道针对每个段的“翻译状态”,该“翻译状态”由所有先前的控制命令组成。该方法要求对PDL流的完整了解,这只能通过解释该流来实现。由于认识到解释 是瓶颈,本发明的实施例之一将这个解释分配给多个子处理。遭遇翻译状态变化的任意子 处理都将这种变化报告给主处理。使用特定的技术来同步由多个子处理创建的状态。除了在第5,652,711号美国专利中描述的发明的复杂性以外,该专利也没有公开 创建段的机制。例如,在PostScript的情况下,没有“数据命令”和“控制命令”的概念。几 乎所有的图形操作符都改变解释器的状态。遗憾的是,该专利没有提供从PostScript操作 符到数据/控制命令的映射。W0 04/110759同样也是宽专利,可应用到包括PostScript的所有PDL。该专利的 目的是克服页面的相互依赖性。如同许多其他已知的技术那样,每个页面都被分割成段。这里的新颖之处是,每个生成的段都由两个新文件表示全局数据文件和段数据文件。为了跳 过页面,需要执行全局文件。为了打印页面,需要执行段数据文件。遗憾的是,W0 04/110759没有公开识别段的机制。该专利也没有描述创建全局数 据文件和组成段的段数据文件的机制。从该专利的描述中,考虑到该发明能够识别和提取 “图形对象”并且考虑到没有参考DSC和DSC相关专利,可以假设暗示了一种基于解释器的 方法,从而,如上所讨论的,限制了系统的整体处理能力。第6,817,791号美国专利描述了将PostScript作业分割成独立页面。针对资源 (习惯用语,根据该专利的语言)分析该PostScript作业;接着提取资源并且在打印作业 头中重组资源。接着该头被置于每个页面之前,从而使得该页面包含所有必要的资源,从而 使该页面独立于其他的页面。每个头(被附在页面上)包含该页面之前的所有资源,但是 不包括该页面的资源。如同该专利所承认的,其结果是页面被附有巨大的头。为了巧妙解决这个问题,第 6,817,791号美国专利引入了 “块”的概念;取代将作业分割为独立的页面,该作业被分割 为独立的块。在这种方法中,头开销被块中的多个页面分摊。块可以小到一个页面或大到 整个作业。由于块是独立的,所以它们可以以任何顺序被处理,并且可以被分配给多个处理 结点进行并行处理,从而被称为块并行。关于块并行,并不清楚该块并行与其他已知的块并行方法的区别。例如,早在1992 年出版的“Adobe文档结构转换规范第三版(AdobeDocument Structuring Conventions Specification Version 3)”提到了块并行:“例如,用户请求文档的前100页在5个单独的打印机上并行地打印。文档管理器 将该文档分割成5个部分,每部分20页,为每个部分复制原始序言和文档设置。”此外,该专利建议一种逆序打印非DSC符合的作业的优化方法。“一种略微更加高效的方法是单次穿过文档,寻找材料,该材料本应当在头中,但 却不在,并且将该材料附到头上并且接着只输出该头一次,其后跟着相反顺序的所有页本领域一般技术人员知道所描述的方法很少起作用。这是因为每个页面可能会包 含“字体设置(setfont) ”和其他的PostScript操作符,其他的PostScript操作符源自前 面的页面并且不能在“头”中被指定。遗憾的是,因为和将头加到每个页面相关的严重效率 原因,该未优化的方法不能被使用。结论是,不明确如何应用使用本专利实施有效的逆序打 印。然而,第6,817,791号美国专利主要的问题是,将资源头附加在每个页面之前所 造成的开销。该开销会导致使用页面平行的文字处理方法的不是最理想的性能。替代的块 方法将导致不是最理想的负载平衡(如果块太大)或头的大开销(如果块太小)和为了根 据页面复杂度、作业大小、系统中的资源、当前系统负载和其他的因素估计理想的块的大小 而需要发明复杂的方案。考虑到上面的描述,期望提供一种方法和设备,该方法和设备1.避免累积的头开销,2.使用页面并行,从而避免上面提及的块大小的估计复杂性,3.获得有效的范围打印,以及
4.获得可靠的页面逆序。本发明克服了上面指出的问题以及其他的问题。

发明内容
本发明提供了一种高效处理缺乏页面独立性的PDL数据流(作业)的方法和设备。系统将作业有效地组织成页面、数据和资源。经过组织的作业具有以下益处1.经过组织的作业提供原始作业的高层次结构。该结构是用于作业分析、报告、输 出前的准备、拼版决定和其他处理的手段。2.经过组织的作业可以被传递给多PDL处理器,用于高效的页面并行处理。3.可选的页面或页面范围可以被高效地打印。4.页面可以被高效地重组以实现逆页序打印或以其他顺序打印。经过组织的作业具有下列特性1.经过组织的作业不重组原始作业的数据和资源。2.经过组织的作业能够使用多种格式被有效地包装以满足工作流程、存储、性能 和其他的需求。3.能够通过将经过组织的作业表达为分离的外部结构来实现最有效的包装,其与 目录相似,使用指针或偏移值指向原始PostScript作业的段,以此保护原始作业并且避免 写入经过修改的作业的开销。就PostScript作业而言,本发明使用DSC处理和文字解析。


图1是示意图,图解说明了使用空装置的页面并行处理。图2是示意图,图解说明了使用空装置的页面二级管线式并行处理。图3是示意图,图解说明了基于显示列表的中央解释。图4是示意图,图解说明了用于页面并行的PDF方法。图5是示意图,图解说明了作业并行方法。图6是示意图,图解说明了一般处理图。图7是示意图,图解说明了将资源分割到资源存储器。图8是示意图,图解说明了组织器部件。
具体实施例方式本发明的详细描述将允许本领域普通技术人员实施完整表述的本发明,同时不限 制实施者在获取最佳的可能性能时的创造性和最有效地操纵所有要求的生成器的能力。虽然本发明是结合实施例之一描述的,但是应当理解的是,其并不试图将本发明 限制到该实施例。相反地,其意图涵盖所附权利要求所涵盖的所有的替代、修改和等价物。使用多处理器为PostScript作业和基于PostScript的VDP作业获得最高可能的 速度是一项复杂的工作并且对于其没有好的“数学解决方案”。这就是为什么本发明是基于 本领域的广泛经验证明的一些结论的原因,这些结论包括1.页面并行打印不要求页面独立性。页面并行打印只要求具有明确“资源标记”的“页面分离”。页面分配器需要或者将整个页面发送到呈现该页面的处理器或者只将在该 页面中定义的资源发送到不呈现该页面的其他处理器。这就是为什么设计时不是页面独立 的PPML理想地适合于获得高效的页面并行的原因。2.使用作业并行能够最高效地处理短作业。短作业的定义依赖于系统处理器数 量、打印机速度、期望的作业复杂度等等。对于一些系统,短作业被定义为具有不多于4个 页面,而对于另一些系统,短作业可以被定义为具有不多于100个页面甚至更多。3.在中等大小或大的PostScript作业中的资源集中度快速地下降。也就是说,大 部分资源都在第一页之前或在第一页内定义。第二页典型地包含少于第一页的资源。第三 页所包含的资源典型地更少于第二页。在作业包含500个页面的情况下,第250页不太可 能包含任何资源。对于包含多于100,000个文档的基于PostScript的典型VDP作业,在其 前100个文档之后的文档几乎不可能包含任何资源。根据上述结论,本发明的主要目标是通过有效地标记作业中的页面、文档和资源 来组织作业,用于有效地分配到多个处理结点。参考图6,组织页面的部件是作业组织器 62,该组织器接收PostScript作业11并且生成经过组织的作业63。将经过组织的作业分 配到多个PDL处理器65的部件被称作分配器64。本发明的一个方面是,组织器不需要重组作业,它可以原地保持所有的数据和资 源。这就是发明和其他发明不同的地方,并且也产生了空前的分割和并行处理的速度。事实 上,在本发明的一个实施例中,经过组织的作业被表示为对原始作业的部分的参考(目录) 清单。为了理解和体会该语句,考虑可能的组织和对经过组织的作业的包装。经过组织的作业被表示为许多有序段。这些段使用元数据定义作业结构,并且包 含作业数据。每个段都用标签定义,下面就是所需的7个标签-Beginjob-Endjob-BeginDoc-EndDoc-BeginPage-EndPage-Data对于纯PostScript作业(其不具有文档概念)只需要下列5个标签-Beginjob-Endjob-BeginPage-EndPage-Data包含具有两个页面的一个文档的简单组织的作业的例子包括下列标签BeginjobDataBeginDocBeginPage
DataEndPageDataBeginPageDataEndPageEndDocEndjob经过组织的作业的正式描述为作业=Beginjob, [doc | Data]氺,Endjob文档=BeginDoc, [page | Data] EndDoc5(胃=BeginPage, [Data]*, EndPage上述正式描述的口头描述为——作业被标签Beginjob和Endjob封装并且包含多个文档(doc)段和数据 (Data)段。——文档(或VPS术语中的目录单(booklet))被标签BeginDoc和EndDoc封装 并且包含多个页面(page)段和数据(data)段。——页面被标签BeginPage和EndPage封装并且包含多个数据(Data)段。与PPML相似,数据可以包含明确的作用域。该作用域可以是页、文档、作业和 全局。资源被定义为具有比当前作用域更高作用域的数据。例如,如果数据被定义在页 面中且具有作业作用域,那么该数据就是资源。读者将理解这种常规的资源定义(同在 PostScript、PPML和其他PDL中的资源定义相同)。经过组织的作业适合于页面并行分配 和文档并行分配。根据如下所述规则,分配器分派经过组织的作业,用于页面并行处理——作用域=全局、作业和文档的数据被分配给所有被指派处理该作业的处理
o——作用域=页面的给定页面的数据只被分配给一个处理器——被指派处理该 页面的处理器。根据如下规则,分配器将经过组织的作业分派用于文档并行处理——作用域=全局和作业的数据被分配给所有被指派处理该作业的处理器。——作用域=文档和给定文档的页面的数据只被分配给一个处理器——被指派 处理该文档的处理器。经过组织的作业能够被包装以满足该系统的存储和性能需求—经过组织的作业可以使用XML包装。每个段都被表示为一个XML构造。这与 PPML相似(具有所有关于二进制数据的已知问题)。——一种更加高效的包装是为每个段使用标签和长度格式。这与已知的格式相 似,例如TAR格式,并且允许高效的二进制表示。——更加高效的包装被表示为分离的外部结构,其与包含标签和使用指针或偏移 值指向原始PostScript作业的段的目录相似。这就证明了本发明的权利要求之一,在本发明的实施例之一中整个作业被保存。这是一种PostScript作业变换领域不公知的独特的 表示方式,并且只能作为本发明的结果获得。一些实施发现保持所有的或一些共同资源74存留在共享的资源存储器75中是更 加有益的。如在图7中所描写的,该存储器被共享在组织器62、分配器64、处理器66和其 他系统结点之间。举例来说,一些系统可能受益于在共享的资源存储器75中存储全局VDP对象,而其他的系统可能受益于在共享的资源存储器75中存储所有可再使用的VDP对象,并且另外 一些系统可能受益于在共享的资源存储器75中存储所有或一些PostScript资源。这样做 的益处是在中心位置保存资源并且减少经过组织的作业的尺寸。一些系统可能受益于创建 经过组织的作业,该作业将上述存储的资源从经过组织的作业中移除,而一些系统可能受 益于将经过组织的作业表示为指回原始作业的有效外部结构。在任一情况下,理解在产生 经过组织的表示时本发明没有重组原始作业的数据/资源是重要的。下面是关于全局作用域资源的一些考虑。与PPML相似地,全局作用域被用于定义 和保存作业之间的全局资源。这是全局作用域的主要和常规的目的。但是在本发明的实施 例之一中,全局作用域被用于表示不受保护的PostScript作业,这些作业改变PostScript 解释器的永久状态。使用上面描述的分配逻辑,每个结点将接收所有的数据(因为该数据 具有全局作用域)。为了消除“显示页面(showpage)”操作符的效应(否则将导致在每个 结点打印所有的页面),可以使用许多已知的技术(重新定义“显示页面”、建立空装置和其 他更多的技术)。给出处理不受保护的作业的这个实施例,依赖本发明的用于处理不受保护 的PostScript作业的其他方法是可行的。读者必须意识到是经过组织的作业的高流动本质。这就是说,页面的段可以在他 们被标记(该过程的发生通常甚至在页面被组织之前)后立即被分配给处理器。只要求通 过作业一次来组织和分配该作业。尽管本发明的优选实施例并不重组作业中的资源并且将这些资源保存在它们被 发现的地方,但是应当理解的是重组资源和将它们移到经过组织的作业的其他位置或者甚 至是作业之外(如图7所示)并不改变本发明的精神。举例来说,本发明的一个实施例可以将资源从发现该资源处的页面中移到该页面 的开头(为了美化或其他的理由)。尽管这很有可能使得该实施例不那么高效,但其仍然比 将所有的资源都堆积到头并且将该头附加在每个页面之前(这是一些寻求页面独立性的 应用程序已经这样做的)要显著地高效。由于经过组织的作业允许高效的页面跳跃,所以本发明允许高效的页面并行的以 页为范围的处理。在作业中重组或使页面逆序是一个更加复杂的过程。在并行页面打印领域的其他 发明或者并不致力于这个问题,例如WO 04/110759,或者给出了非常有限的解决方案,例如 美国专利6,817,791,该解决方案在大部分文件上失败。为了讨论,我们专注于作为页面重 组的最糟情况的逆序打印。该逆序打印是通过下列技术实现的1.运行组织作业的完整操作。这将会标记页面边界和资源。2.在上述操作期间收集所有的针对生成器的习惯用语,这些习惯用语影响持续 在页面之间的图形状态并且将该图形状态同每个页面相关联。这种习惯用语的一个例子是由Windows驱动器生成的“fontname Ji”(字体名称Ji)命令。该命令将字体设置到 ‘fontname’。应当注意到,这与收集资源和堆积资源有着很大的区别例如,在Windows驱 动器下,每个页面需要仅仅将最后的‘Ji’命令与页面关联(不是将所有之前的‘Ji’命令 都与资源关联)。结果是,这种关联状态是极其小的(经测量典型地为几百字节或者甚至更 小)。3.执行所有的资源。这就创建了适当的PostScript虚拟存储(VM)状态。4.以逆顺序将页面分配到处理结点。在分配页面之前添加微小的头,该头设置所 需的图形状态部分。上述方法将对宽广范围的打印作业起作用。本发明的这些和其他目标、特征和优点对于本领域技术人员来说在结合显示和说 明了本发明示例实施例的附图阅读了下列详细的描述之后将变得明显。组织器部件以流方式解析原始作业、分析该原始作业、补偿非DSC符合性并且输 出良好形成的经过组织的作业,该作业适合高效地分配到多个处理结点。为了成功地组 织由大量不同的生成器生成的大量作业,本发明的一个优选实施例包含显示在图8中的部 件。这些部件可以被重命名并且部件责任可以被重新安排,这些部件被分成多个子部件,甚 至移除其中一些部件而不会改变本发明的本质。可以逐行地、逐个标记地和以其他的粒度进行解析,但是为了方便描述而参考按 行解析。原始作业中的每一行以流的方式被分析。如果行以“ ”开头,那么其为候选的 DSC行。一些简单的额外处理足够增加其确实为DSC行的可能性。如果一行被错误地识别 为DSC行(例如二进制数据中的行可能会看上去像是有效的DSC行),这也不是问题;该行 与任何有效的、期望的DSC匹配的概率是可以忽略不计的(在大量的测试中未遇到)。DSC 行是重要的并且其有助于执行一般的DSC处理,以识别本作业的创建器,识别作业的结构 并且有时甚至探测资源。如上所述,大多数PostScript作业是非DSC符合的。但是典型地,每个生成器都 以针对生成器的、可预测的方式破坏DSC符合性。这是因为每个生成器作为有限程序可能 只生成数量有限的输出模式。为了组织PostScript作业以进行高效的并行处理,组织器需 要补偿这种非DSC符合性。该补偿是通过分析作业数据来完成的。为了为非DSC符合性获 得正确高效的补偿,组织器需要识别生成器(也被称为“创建器”)。需要对字生成器进行一些说明。假设生成器是XyzSoft通常是不够的。需要进一 步地阐明该生成器是使用Windows驱动器的XyzSoft或者是使用LaserWriter驱动器的 XyzSoft或者是使用本机代码生成的XyzSoft。所有这些输出通常是非常不同的。有时甚 至需要指定XyzSoft的版本和Windows驱动器的版本等。这就是为什么生成器需要由完整 的身份集识别,这种身份集包括应用程序名称、驱动器名称和版本等等。这可能会生成大量的组合。一种减少这种组合激增的方法是支持以下事实通常 (但不是总是)情况下,XyzSoft模式是相同的、不依赖于所使用的驱动器的。这就是为什 么建议使用单独的一组部件来分别地分析XyzSoft模式、Windows模式、LaserWriters模 式等。我们将这种特有的部件称作“生成器一处理器”。(不要与呈现作业的多个处理器混 淆。) 就生成器术语而言,更加精确的是讨论应用程序/驱动器的组合。更好的是使用术语生成器链,这适应于不同情况下的本机生成器——纯驱动器(链中的元件数量为1)——本机应用程序(链中的元件的数量为1)——应用程序/驱动器组合(链中的元件数量为2)—在链中的生成器的数量大于2的一些情况下(例如应用使用LaserWriters 驱动器的QuarkXPress的Creo Darwin,就创建了 3元件生成器链)。一般处理流稈在抽点打印中,组织器逐行地解析PostScript作业。开始时生成器链是空的(生 成器未知)。使用一般的DSC处理82。在某个时刻,组织器81探测在生成器链中的第一元件。为了进一步讨论,我们假 设该第一元件为LaserWriters驱动器。从那时刻起,每行都被提交给LaserWriters处理 器(生成器一处理器的实例)。LaserWriters处理器对每一行进行快速的分析。通常分析行开始处和结尾处的一 些字节就足够,从而丢弃那些不感兴趣的行。大部分行是生成器一处理器不感兴趣的。但是 如果某一行可能引起兴趣,那么就要进行更详细的处理。如果资源监听器85认为某一行是 资源模式,那么生成器一处理器调用某个生成器一处理器特定的逻辑并且标记该资源。该 生成器一处理器特定的逻辑包括往回搜索资源的开始处并且向前搜索资源的结尾处。资源 被发现并且处理器通知组织器关于资源的起始位置和结束位置。组织器依照上述讨论的包 装方案标记资源并且立即将其位置前进到该资源之后。这样就结束了对这个资源的处理。如果生成器一处理器没有识别出行,那么它就有效返回。接着,组织器使用下面描 述的一般DSC处理器逻辑来处理行。这种方法的长处在于每个生成器一处理器都能在被要 求时重写一般DSC处理器 的默认行为,并且同时依靠一般DSC处理器的能力来处理大部分的行。在这种方式中,每个 生成器一处理器可以在补偿特定的非DSC符合性所需的最小数量的代码行内实施;更加符 合的生成器导致更加简单的生成器一处理器实施。继续该例子,组织器探测应用程序(驱动器LaserWriters在前面的阶段中已经被 探测到)。为了更有针对性,假设其为Adobe Acrobat。组织器将这个Adobe Acrobat作为 第二元件安装在生成器链中。由于这一点,组织器将为在生成器链中的每个生成器一处理 器提供每一行——组织器将为Adobe Acrobat提供行;—如果该行被拒绝,那么组织器将该行提供给LaserWriters;—如果该行被拒绝,那么组织器将使用一般(或通用)的DSC处理器处理该行。一般的DSC处理器在图8中,一般的DSC处理器82负责一般的DSC处理流程,该流程如同在“Adobe 文档结构转换规范”中所定义的一样。尽管不可以依赖于DSC符合性,如同可以在上面的“一般处理流程”描述中所见, 但是一般的DSC处理器是非常重要的部件。该一般的DSC处理器实现组织器的默认行为并 且将每个生成器一处理器做的尽可能小并且易于实现。一般的DSC处理器执行的操作例如 有分析作业头、分析序言(prologue)、分析作业缺省、分析资源、分析指令集、寻找页面边界、寻找作业尾和许多其他的操作,需要这些操作以用于在“Adobe文档结构转换规范”描述 的一般DSC处理。除此之外,一般的DSC处理器可以执行其他的针对实现的功能,这些功能 对组织作业用于并行处理并不是严格需要的。创津器监听器创建器监听器83负责识别生成器链。如上所述,更加精确的是不仅仅讨论单个创建器或单个生成器而是讨论由多个生成器组成的生成链。使用% %创建器DSC通常是 不可靠的。最可靠的方法是分析指令集(ProcSets),该指令集在PostScript作业中的特 殊部分,其定义特定生成器所需的PostScript程序。这样,如果作业是由LaserWriters 驱动器生成的,那么组织器将在某个点上遇到LaserWriters指令集。如果作业是由Adobe Acrobat应用程序生成的,那么组织器将在某个点遇到Adobe Acrobat指令集。在假设的例 子中,如果作业由XvzSoft生成,但是没有XyzSoft指令集,那么这只是表明XyzSoft在本 作业中不使用任何特定的XyzSoft资源,并且因此不需要分析XyzSoft模式。考虑到有多 种不同的生成器,在某些情况下在确定生成器时分析% %创建器DSC和其他DSC仍然是有 利的。页面数据监听器页面数据监听器84负责决定是否将整个页面标记为资源。显然的,该逻辑对于每 个生成器而言是不同的。经验显示,例如,在多个PostScript拼版包中,对于给定的生成器通常可以实施 探测和提取该生成器所用资源的部件。应当理解的是,通常来说这样做并不容易,需要投入 大量的工程时间。对于PostScript拼版应用程序和其他寻求页面独立性的方法,没有其他 的可行的选项,资源必须被探测和提取。这就是为什么应用程序通常使用下列两种方法1) 投入大量的努力来处理多个生成器;以及2)限制支持的生成器的数量。不寻求页面独立性的本发明在其处置上具有另一选项。如同在实际中显示的,识 别页面上存在资源要比提取或标记这些资源明显地更容易。这就是为什么本发明的实施者 可以在某些情况下选择快速通过页面,如果发现资源,那么就将整个页面标记为资源。考虑 上上面的语句“资源的集中度在作业中迅速下降”,本发明的这个部分允许在非常短的时间 内实施本发明非常合理的实施例。显然地,本发明更精心设计的实施例将小心地使用上述 快捷方式并且将为大部分重要的生成器实施资源标记。资源监听器资源监听器85负责识别和标记资源。资源监听在上面已经被描述。实施者应当 期望大部分时间被用在实施针对生成器的资源监听器,除非使用上述资源页面的快捷方 式。考虑到实施多个拼版,本领域普通技术人员能够实施有效地实施本发明所要求的资源 监听。图像监听器图像监听器86负责探测图像边界和有效地跳过图像。图像可能非常的大并且有 效地识别和跳过它们是有利的。显然的,一般的DSC处理器82逻辑被用于根据DSC协定跳 过图像。该逻辑需要被针对生成器的模式识别逻辑强化以适应非DSC符合性。EPS监听器EPS监听器87负责探测在PostScript作业内的经过封装的PostScript(EPS)边界并且有效地跳过EPS。遗憾的是,一些生成器不使用用于嵌入EPS片段的DSC机制。不能识别EPS和从资源解析中跳过EPS可能会导致不正确的解析(例如,生成多余的页面或者 标记导致资源冲突的多余资源)。这就是为什么需要特别的针对生成器的模式识别逻辑来 监听EPS。图形状杰监听器图形状态监听器88负责收集所有针对生成器的习惯用语,这些习惯用语影响持久的图形状态。需要这个针对生成器的监听器来收集所有针对生成器的习惯用语,这些习 惯用语影响在页面之间持续的图形状态并且如上所述地将该图形状态与每个页面相联合。 这种习惯用语的例子为由Windows驱动器生成的“fontname Ji ”命令,“fontname Ji ”是 在超过页面范围外持续的PostScript的“setfont”(设置字体)命令的别名。名称列表11 PostScript 作业12 第一处理器13 第二处理器14 第三处理器15 第四处理器22 解释器26 呈现器32 中央解释器处理器33 独立页面34 呈现处理器42 PostScript 至 PDF 转换器43 PDF 作业44 PDF 分配器45 多个处理器51 多个 PostScript 作业55 多个处理器62 作业组织器63 经过组织的作业64 分配器65 多个PDL处理器66 处理器74 共同资源75 共享的资源存储器81 组织器82 一般DSC处理器83 创建器监听器84 页面数据监听器85 资源监听器
86 图像监听器87 EPS 监听器88 图形 状态监听器
权利要求
一种用于组织缺少页面独立性的以页面描述语言PDL描述的打印作业的方法,其中经过组织的作业并不要求是页面独立的并且可以被有效地分割和被多个处理器处理,所述方法包括以下步骤将单解析操作应用到PDL作业;探测PDL作业生成器;探测和标记在所述PDL作业中的共享资源;探测和标记在所述PDL作业中的页面边界;以及根据原始的所述PDL作业的所述探测步骤生成经过组织的表示,而不重组在所述PDL作业中的数据和资源。
2.一种用于将缺少页面独立性的以页面描述语言PDL描述的打印作业的重新排序的 方法,包括以下步骤将单解析操作应用到PDL作业中; 探测PDL作业生成器; 探测和标记在所述PDL作业中的共享资源; 探测和标记在所述PDL作业中的页面边界; 记录为每个页面定义图形状态的命令;根据原始的所述PDL作业的所述探测步骤生成经过组织的表示,而不重组在所述PDL 作业中的数据和资源; 执行所述资源;以及将图形状态命令附加在重新排序的、将要被发送的所述页面之前。
3.根据权利要求2所述的方法,其中,所述重新排序是页面逆序。
4.根据权利要求1所述的方法,其中,所述PDL作业是PostScript作业。
5.根据权利要求1所述的方法,其中,所述标记在所述PDL作业中完成。
6.根据权利要求1所述的方法,其中,所述标记是通过从所述经过组织的表示指向所 述PDL作业的部分完成。
7.根据权利要求1所述的方法,其中,所述经过组织的表示导致小的形式因素。
8.一种用于为缺少页面独立性的以页面描述语言PDL描述的打印作业重新排序的设 备,包括用于将单解析操作应用到PDL作业的装置; 用于探测PDL作业生成器的装置; 用于探测和标记在所述PDL作业中的共享资源的装置; 用于探测和标记在所述PDL作业中的页面边界的装置; 用于记录为每个页面定义图形状态的命令的装置;用于根据原始的所述PDL作业的所述探测步骤生成经过组织的表示,而不重组在所述 PDL作业中的数据和资源的装置; 用于执行所述资源的装置;用于将图形状态命令附加在所述页面之前的装置;以及 用于发送重新排序的所述页面的装置。
9.根据权利要求8所述的设备,其中,用于重新排序的装置是用于使页面逆序的装置。
10.根据权利要求8所述的设备,其中,所述PDL作业是PostScript作业。
11.根据权利要求8所述的设备,其中,所述标记在所述PDL作业中完成。
12.根据权利要求8所述的设备,其中,所述标记是通过从所述经过组织的表示指向所 述PDL作业的部分完成。
13.一种用于将缺少页面独立性的以页面描述语言PDL描述的打印作业的重新排序的 设备,包括用于将单解析操作应用到PDL作业的处理器; 用于探测PDL作业生成器的创建器监听器; 用于探测和标记在所述PDL作业中的共享资源的资源监听器; 用于探测和标记在所述PDL作业中的页面边界的数据监听器; 用于记录为每个页面定义图形状态的命令的处理器;用于根据原始的所述PDL作业的所述探测步骤生成经过组织的表示,而不重组在所述 PDL作业中的数据和资源的处理器; 用于执行所述资源的处理器;用于将图形状态命令附加在所述页面之前的处理器;以及 用于发送重新排序的所述页面的处理器。
全文摘要
本发明描述一种高效处理缺乏页面独立性的页面描述语言(“PDL”)数据流的方法和设备。该方法和设备包括为PDL作业应用单次解析操作和由创建器监听器(83)探测PDL作业生成器。在PDL作业中共享的资源由资源监听器(85)探测。PDL作业中的页面边界由页面数据监听器(84)探测并且组织后的表示(63)被生成而无需重组PDL作业中的数据和资源。系统有效地将PDL流组织成页面、数据和资源而无需重组该流。经过组织的数据能够被有效地提交给多个PDL处理器(65)。
文档编号G06F9/50GK101802770SQ200880107937
公开日2010年8月11日 申请日期2008年9月12日 优先权日2007年9月20日
发明者B·阿伦斯塔姆, L·海因 申请人:伊斯曼柯达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1