全面的打印作业构架创建的制作方法

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

发明内容
本发明提供了用于有效地处理缺少页面独立性的PDL数据流(作业)的方法和设备。所述系统有效地将作业组织成页面、数据和资源。有组织的作业具有以下好处1.有组织的作业提供原始作业的高级结构。这种结构对于作业分析、报告、预检、 拼版决定及其他处理是有帮助的。2.有组织的作业能够被提交给多个PDL处理器以用于有效的页面并行处理。3.能够有效地打印选择的页面或页面范围。4.页面能够被有效地重新布置以用于获得页面反向的打印及其他顺序。5.能够提取一组全面的页面特性。有组织的作业具有以下特性1.有组织的作业不重新布置原始作业的数据和资源。2.有组织的作业能够使用多种格式有效地封装以满足工作流、存储、性能及其他需求。3.最有效的封装能够通过将有组织的作业表示成单独的外部结构来获得,类似于使用指针或偏移来指向原始Postkript作业的分段的目录,由此保留原始作业并且避免写经修改的作业的开销。在Postkript作业的情况下,本发明使用DSC处理和文本解析。


图1是示出了使用空设备的页面的并行处理的示意图。图2是示出了使用空设备的页面的两阶段流水线并行处理的示意图。图3是示出了基于显示列表的集中式解释的示意图。图4是示出了用于页面并行操作的PDF方式的示意图。图5是示出了作业并行方式的示意图。图6是示出了一般的处理图示的示意图。图7是示出了将资源分至资源存储装置的示意图。图8是示出了组织器部件的示意图。
具体实施例方式本发明的这个详细说明将允许本领域的普通技术人员以本发明的完整表达来实现本发明,但不限制实施者在获得最佳可能的性能和最有效地处理所有所需要的产生器的能力时的创造。虽然结合了实施例中的一个对本发明进行了描述,但是将理解的是无意把本发明限定到这个实施例。相反地,旨在包括所附权利要求所包括的所有替代方案、修改和等同物。
使用多个处理器为Postkript作业和基于Postkript的VDP作业获得最高可能的速度是复杂的任务并且对于其没有好的“数学答案”。这是本发明基于由本领域中的广泛经验证实的一些结论的原因1.页面并行打印不需要页面独立性。页面并行打印仅需要具有明确的“资源标记” 的“页面分离”。页面分配器需要将整个页面发送至渲染这个页面的处理器或者仅将在这个页面上所定义的资源发送至不渲染这个页面的其他处理器。这就是根据设计不是页面独立的PPML理想地适于获得有效的页面并行操作的原因。2.使用作业并行操作能够最有效地处理短作业。短作业的定义取决于系统处理器的数量、打印机速度、预期的作业复杂度等等。对于一些系统而言,短作业被定义为具有多达四个页面,而对于一些其他系统而言,短作业可以被定义为具有多达100个页面或者还要更多。3.资源的集中度在中型或大型Postkript作业内迅速下降。就是说,大部分资源在第一页面之前或在第一页面内被定义。第二页面通常包含比第一页面更少的资源。第三页面通常包含比第二页面还要更少的资源。在其中作业包含500个页面的情况下,页面 250包含任何资源是不太可能的。对于包含超过100,000个文档的典型的基于Postkript 的VDP作业而言,在前100个文档之外有任何资源是相当不可能的。根据上述结论,本发明的主要目的在于通过有效地标记作业中的页面、文档和资源来组织该作业以用于至多个处理节点的有效分配。参考图6,组织页面的部件是作业组织器62,其接收Postkript作业11并且产生有组织的作业63。将有组织的作业分配至多个 PDL处理器65的部件被称为分配器64。本发明的一个方面是组织器不需要重新布置作业,其可以将所有数据和资源保持在原位。这就是本发明与其他发明的区别并且这产生拆分和并行处理的空前速度。事实上, 在本发明的实施例的一个中,有组织的作业被表示为原始作业的部分的参考列表(目录)。 为了理解和懂得这段叙述,考虑有组织的作业的可能的组织和封装。有组织的作业被表示为多个顺向的(consequent)分段。这些分段使用元数据来定义作业结构,并且包含作业数据。每个分段都由标签定义并且需要以下七个标签-BeginJob-EndJob-BeginDoc-EndDoc-BeginPage-EndPage-Data对于纯粹的Postkript作业而言,仅需要这五个标签。包含一个文档并且该文档包含两个页面的简单的有组织作业的示例将包括以下标签BeginJobDataBeginDocBeginPageDataEndPageData
BeginPageDataEndPageEndDocEndJob有组织的作业的正规描述为job = BeginJob, [doc|Data]氺,EndJobdoc = BeginDoc, [page|Data]EndDocpage = BeginPage, [Data]EndPage上述正规描述的语言描述为-作业通过BeginJob标签和EndJob标签被封装并且包含多个doc和Data分段。-文档(doc)(或按VPS术语为小册子(booklet))通过BeginDoc标签和EndDoc 标签被封装并且包含多个页面和数据分段。-页面通过BeginPage标签和EndPage标签被封装并且包含多个Data段。类似于PPML,数据可以包含明确的范围。该范围能够是页面、文档、作业和全局。 资源被定义为具有比当前范围更高的范围的数据。例如,如果数据定义在页面内并且具有作业范围,则其为资源。阅读器将懂得资源的常规定义(与P0Stkript、PPML及其他PDL 中的资源定义一致)。有组织的作业适于页面并行分配以及适于文档并行分配。分配器根据以下规则分派有组织的作业以用于页面并行处理-范围=全局、作业和文档的数据被分配至被指派用于处理这个作业的所有处理
ο-对于给定的页面,范围=页面的数据仅被分配至一个处理器一即被指派用于处理这个页面的处理器。分配器根据以下规则分派有组织的作业以用于文档并行处理-范围=全局和作业的数据被分配至被指派用于处理该作业的所有处理器。-对于给定的文档,范围=文档和页面的数据仅被分配至一个处理器一即被指派用于处理这个文档的处理器。有组织的作业能够被封装以满足系统的存储和性能需求-能够使用XML来封装有组织的作业。每个分段都被表示为XML构造。这类似于 PPML (具有与二进制数据有关的所有已知问题)。-更有效的封装将标签和长度格式用于每个分段。这类似于诸如TAR格式等已知的格式,并且允许有效的二进制表示。-还要更有效的封装被表示为单独的外部结构,类似于包含标签并且使用指针或偏移来指向原始Postkript作业的分段的目录。这证明本发明的权利要求中的一个是正确的,即在本发明的一个实施例中,整个作业被维护。这是在Postkript作业变换技术中不为人知的独特表示并且其仅作为本发明的结果而可用。一些实现可能发现保持公共资源74的全部或一些驻留在共用的资源存储装置75 中是更有利的,在作业组织器62、分配器64、处理器66之间共用存储装置,对于其他系统节点也是如此,如图7所描绘的那样。
例如,一些系统可以从将全局VDP对象存储在共用的资源存储装置75中获益,而其他系统可以从将所有的VDP可重复使用的对象存储在共用的资源存储装置75中获益,并且其他系统可以从将所有或一些Postkript资源存储在共用的资源存储装置75中获益。 这样做的好处是将资源保持在中心位置并且减少有组织的作业的大小。一些系统可以从其中将上述存储的资源从有组织的作业中移除的创建有组织的作业中获益,而一些系统可以从将有组织的作业表示为指回到原始作业的有效外部结构中获益。在任何一种情况下,重要的是理解在产生有组织的表示时本发明不重新布置原始作业的数据/资源。以下是关于全局范围资源的一些考虑。类似于PPML,全局范围被用于定义和维持作业之间的全局资源。这是全局范围的主要和常规的目的。但是在本发明的实施例的一个中,全局范围被用于表示无保护的Postkript作业,即改变Postkript解释器的固定状态的作业。在使用上文所描述的分配逻辑的情况下,每个节点将接收所有的数据(因为它具有全局范围)。为了抵消'showpage'操作符的影响(否则那可能导致由每个节点打印所有页面),许多广为人知的技术能够被使用(重新定义showpage、建立空设备以及更多)。 提出处理无保护作业的这个实施例,依靠本发明的用于处理无保护的Postkript作业的其他方式可以是可行的。阅读器必须懂得有组织的作业的高度的流式性质(streaming nature)。就是说, 页面的分段能够在它们被标记(这甚至最经常发生在页面被组织之前)之后立即被分配至处理器。仅仅需要贯穿整个作业的一个通路来组织和分配该作业。尽管本发明的优选实施例不重新布置作业中的资源并且将它们保持在它们被发现的地方,但将理解的是重新布置资源并且将它们移到有组织的作业中的其他地方或甚至移到该作业的外部都不改变本发明的精神。见图7。例如,本发明的实施例可以将资源从资源在其中被发现的页面内移到这个页面的前面(为了美学原因或为了其他的原因)。尽管这很可能使该实施例的效率降低,但是其仍然比将所有资源都累积到标头中并且将这样的标头置于每个页面之前明显更有效,如寻求页面独立性的应用中的一些所做的那样。由于有组织的作业允许有效的页面跳过,所以本发明允许有效的页面并行页面范围处理。重新布置或颠倒作业中的页面是更复杂的程序。在并行页面打印领域内的其他发明或者不解决这个问题,诸如WO 04/110759,或者提供非常有限的解决方案,诸如美国专利 No. 6,817,791,这将对很大一部分文件不起作用。为了讨论的目的,将集中在反向打印上, 其为页面重新布置的最坏情况。通过以下技术来获得反向打印1.执行整个通路以组织作业。这将标记页面-边界和资源。2.在上述通路期间,还收集影响存留在页面之间的图形状态并且使其与每个页面相关联的所有特定于产生器的惯用语法。这样的惯用语法的示例将是Windows驱动器所产生的〃 fontname Ji"命令。这个命令将字体设置为'fontname'。注意,这非常不同于收集和累积资源例如,在Windows驱动器的情况下,每个页面仅需要将最后的'Ji'命令与页面相关联(不是如对于资源那样将所有先前的'Ji'命令与资源相关联)。结果,这个相关联的状态极其小(通常被测量为几百个字节或甚至更小)。3.执行所有资源。这创建了适当的Postkript虚拟内存(VM)状态。4.以反向顺序将页面分配至处理节点。在分配页面之前,添加微小的标头,其设置图形状态的所需要的部分。上述方式将对非常大范围的打印作业起作用。在结合附图阅读以下详细说明时,本发明的这些及其他目的、特征和优点对于本领域的技术人员将变得显而易见,在所述详细说明中示出和描述了本发明的示意性实施例。组织器部件以流处理形式解析原始作业、对其进行分析、补偿DSC不遵从性 (non-DSC-compliance)并且输出适于至多个处理节点的有效分配的结构良好的有组织作业。为了成功地组织由大量不同的产生器所产生的大量作业,本发明的优选实施例包含图 8所示的部件。在不改变本发明的性质的情况下,能够对这些部件重新命名,能够重新布置这些部件的职责,将这些部件分成多个子部件,并且这些部件中的一些甚至被移除。能够逐行、逐标记及按照其他粒度来完成解析,但为了描述方便,将对通过行来解析进行参考。以流处理形式分析原始作业中的每一行。如果行以"%%"开始,则它是DSC 行的候选。某种简单的附加处理足以提高这确实是DSC行的可能性。如果行被错误地识别为DSC行(例如在二进制数据内的行可能看起来像正确的DSC行),这并不是问题;它将匹配任何正确并且预期的DSC的概率是可以忽略的(在广泛的测试中未遇到)。DSC行是重要的并且有助于执行一般的DSC处理、有助于识别作业的生成器、有助于识别作业的结构并且甚至有时有助于检测资源。如在上文中所提及的那样,大部分Postkript作业是不遵从DSC的。但是,通常每个产生器以特定于产生器的可预测方式来打破DSC遵从性。这是因为每个产生器作为有限程序仅可以产生有限数量的输出模式。为了组织Postkript作业以用于有效的并行处理,组织器需要补偿这种DSC不遵从性。这通过分析作业数据来完成。为了获得DSC不遵从性的正确并且有效的补偿,组织器需要识别产生器(也被称为“生成器(creator)”)。对于字产生器需要一些说明。说产生器是XyzSoft通常是不够的。它需要被进一步澄清为使用Windows驱动器的XyzSoft、或使用LaserWriter驱动器的XyzSoft或使用本地代码生成的XyzSoft。所有这些输出通常是非常不同的。有时,甚至需要表明XyzSoft 的版本以及Windows驱动器的版本等等。这就是产生器需要通过可以包括应用名称、驱动器名称、版本等的完整标识集合来识别的原因。这可以产生大量的组合。减少这种组合性爆炸的一种方式是利用通常(并非始终这样)XyzSoft模式是相同的,独立于所使用的驱动器的事实。这是具有分别分析XyzSoft 模式、Windows模式、LaserWriters模式等单独的一组部件是可取的原因。我们将把这样的特定部件称为“产生器-处理器”(不会与渲染作业的多个处理器混淆)。至于产生器术语,更精确的是谈论应用/驱动器组合。还要更好的是使用术语产生器链路(producer-chain),这适应不同的情况包括本地产生器(所述链路中的元件数量等于1)、应用/驱动器组合(所述链路中的元件数量等于幻以及甚至当所述链路中的产生器数量大于2时的某些潜在情况。一般处理流程在抽点打印(snapshot)中,组织器逐行解析Postkript作业。起初,产生器链路是空的(产生器是未知的)。通用DSC处理82被使用。在某个时刻,组织器81检测产生器链路中的第一元件。为了进一步讨论,让我们假定它是LaserWriters驱动器。自那个时刻起,每一行都被提交给LaserWriters处理器 (产生器-处理器的实例)。LaserWriters处理器执行对每一行的快速分析。为了丢弃不感兴趣的行,通常分析在该行起始处和在该行末尾处的几个字节就足够了。产生器-处理器对大部分行是不感兴趣的。但是,如果对该行具有潜在的兴趣,则执行更详尽的处理。如果该行被资源嗅探器 (sniff er) 85识别为资源模式,则产生器-处理器调用某个特定于产生器-处理器的逻辑并且标记该资源。这个特定于产生器-处理器的逻辑涉及向后搜索该资源的起始和向前搜索该资源的末尾。资源被找到并且处理器通知组织器关于该资源的起始位置和结束位置。组织器根据在上文中所讨论的封装方案来标记资源并且在该资源之后立即使其位置前进。这样结束对这个资源的处理。如果产生器-处理器未识别该行,则它有效地返回。组织器进而使用一般的DSC 处理器逻辑(在下文中描述)来处理该行。这种方式的优势在于每个产生器-处理器都能够在有需要的情况下重写通用DSC 处理器的默认行为,而同时依靠通用DSC处理器的能力来处理大部分的行。以这种方式,每个产生器-处理器都能够以补偿特定的DSC不遵从性所需要的最少数量的代码行来实现; 更兼容的产生器则导致更简单的产生器-处理器实现。继续该示例,组织器检测应用(驱动器LaserWriter在先前阶段被检测)。为了特异性(specificity),比如说它是Adobe Acrobat。组织器安装这个应用作为产生器链路中的第二元件。自这点起组织器将把每一行提供给产生器链路中的每个产生器-处理器-组织器将把行提供给AdobeAcrobat ;-如果该行被拒绝,则组织器将把该行提供给LaserWriters;-如果该行被拒绝,则组织器将使用通用DSC处理器来对其进行处理。通用DSC处理器在图8中,通用DSC处理器82负责一般的DSC处理流程,如〃 Adobe PostScript Language Document Structuring Conventions Specification (Adobe PostScript 语目 .文档构造协定规范)“所定义的那样。虽然不能够依赖DSC遵从性(如能够在上文的“一般处理流程”说明中所看到的那样),但是通用DSC处理器是非常重要的部件。它实现组织器的默认行为并且使每个产生器-处理器尽可能小并且易于实现。通用DSC处理器执行诸如分析作业标头、分析作业开端、分析作业默认值、分析资源、分析procset、找到页面边界、找到作业尾部等操作以及对于一般的DSC处理所需要的许多其他操作,如〃 Adobe Document Structuring Conventions Specification(Adobe文档构造协定规范)〃所描述的那样。另外,它可以执行不是对于组织作业以用于并行处理所严格需要的其他特定于实现的功能。生成器嗅探器生成器嗅探器83负责识别产生器链路。如上文所提及的那样,更精确的不是仅谈论单个生成器或单个产生器,而相反地是谈论由多个产生器组成产生链路。使用% % Creator DSC—般不可靠。最可靠的方式是分析ftxx^et,即定义对于特定产生器所需要的PosUcript程序的PosUcript作业中的特殊部分。这样,如果作业是由LaserWriters 驱动器所产生的,则组织器将在某个点遇到LaserWriterSProcSet。如果作业是由AdobeAcrobat应用所产生的,则组织器将在某个点遇到Adobe Acrobat ProcSet0在假定的示例中,如果它是由XyzSoft所产生的,但是没有XyzSoft ftOdet,则其简单地意指XyzSoft在这个作业中没有使用任何特定的XyzSoft资源,并且因此,不需要分析XyzSoft模式。考虑到产生器的多样性,在某些情况下在确定产生器时分析Creator DSC及其他DSC仍然是有利的。页面数据嗥探器页面数据嗅探器84负责对是否将整个页面标记为资源做出决定。明显地,这个逻辑对于每个产生器是不同的。如经验所示,例如在多个Postkript拼版封装中,对于给定的产生器而言,始终能够实现检测并且提取由这个产生器所使用的资源的部件。应理解的是,往往这不简单;需要投资大量的工程时间。对于Postkript拼版应用以及对于寻求页面独立性的其他方式而言,没有其他可行的选项;必须检测并且提取资源。这是这样的应用通常使用以下两种方式的原因1)投入极大的精力来处理多个产生器;以及2、限制所支持的产生器的数量。本发明不寻求页面独立性,其有另一选项由其支配。如实践所示,识别资源在页面上的存在比提取或标记它们明显更容易。这是本发明的实施者在某些情况下可以选择在页面上快速通过并且如果找到资源,则可以选择将整个页面标记为资源的原因。考虑上文中的陈述,即“资源的集中度在作业内迅速下降”,本发明的这个部分允许在非常短的时间内实现本发明的非常合理的实施例。明显地,本发明的更详尽的实施例将谨慎地使用上述简化操作并且将尝试为最重要的产生器实现资源标记。页面设置嗅探器页面设置嗅探器89负责识别包含每个页面的页面特性的部分(pagedevice设定)。这样的特性的示例是PageBoundingBox、PaPerWeight、PaperColor等。在简单的情况下,这样的部分通过% % BeginPageSetup-%% EndPageSetup对来确定界限。但是对于某些产生器而言,需要额外的解析。能够彻底地分析所提取的I^gektup部分以得到 setpagedevice 命令。更可靠并且有效的方式是从PDL数据中提取I^gektup部分并且使用Postkript 解释器连同所需要的作业资源一起来执行I^agektup部分。能够通过setpagedevice的典型的重新定义来得到pagedevice设定。例如,能够对setpagedevice重新定义而以XML形式输出pagedevice关键字/值。考虑到仅一小部分原始Postkript文件被执行,所描述的检测页面特性的过程是极其快的。资源嗅探器资源嗅探器85负责识别和标记资源。在上文中描述了资源嗅探(resource sniffing)。实施者应预期大部分时间被花费在实现特定于产品的资源嗅探器,除非使用了上述资源-页面简化操作。考虑多个拼版实现,本领域的普通技术人员能够实现有效地实现本发明所需要的资源嗅探。图像嗅探器图像嗅探器86负责检测图像边界并且有效地跳过图像。图像可能是非常大的,而识别并且有效地跳过它们是有利的。明显地,通用DSC处理器82的逻辑被用于根据DSC协定来跳过图像。这个逻辑需要通过特定于产生器的模式识别逻辑来扩大以适应DSC不遵从性。EPS嗥探器EPS嗅探器87负责检测Postkript作业内部的封装Postkript(EPS)边界并且有效地跳过EPS。遗憾的是,某些产生器不使用用于嵌入EPS片段的DSC机制。未能从资源解析中识别EPS和跳过EPS可能导致不正确的解析(例如产生额外页面或标记导致资源冲突的额外资源)。这是需要特殊的特定于产生器的模式识别逻辑来嗅探EPS的原因。图形状杰嗥探器图形状态嗅探器88负责收集影响持续的图形状态的所有特定于产生器的惯用语法。这种特定于产生器的嗅探器被需要以收集影响在页面之间存留的图像状态并且使其与每个页面相关联的所有特定于产生器的惯用语法,如在上文中所讨论的那样。这样的惯用语法的示例是由Windows驱动器所产生的"fontname Ji “命令,其为在页面范围之外存留的PosUcript的'setfont'命令的别称。部件列表11PostScript 作业
12第一处理器
13第二处理器
14第三处理器
15第四处理器 22解释器
26渲染器
32集中式解释器处理器
33独立页面
34渲染处理器
42PostScript 至 PDF 转换器
43PDF作业
44PDF分配器
45多个处理器
51多个PostScript作业
55多个处理器
62作业组织器
63有组织的作业
64分配器
65多个PDL处理器
66处理器
74公共资源
75共用的资源存储装置
81组织器
82通用DSC处理器
83生成器唤探器
84页面数椐嗅探器85资源喚探器
86图像唤探器
87EPS嗅探器
88图形状态喚探器
89页面设置唤探器
权利要求
1.一种用于组织缺少页面独立性的页面描述语言(PDL)打印作业的方法,其中不要求被组织的PDL打印作业是页面独立的并且被组织的PDL打印作业能够被有效地分开以及被多个处理器处理,所述方法包括下列步骤对所述PDL打印作业应用单个解析通路; 检测PDL作业产生器;检测并且标记所述PDL打印作业中的共用资源; 检测、标记并且提取页面特征部分; 检测并且标记所述PDL作业中的页面边界;以及根据所述PDL打印作业的所述检测步骤产生有组织的表示而不用重新布置所述PDL打印作业中的数据和资源。
2.根据权利要求1所述的方法,其中通过Postkript解释器来解释所述页面特征部分以为所述PDL打印作业提供页面特性。
3.根据权利要求1所述的方法,其中所述PDL打印作业是Postkript作业。
4.根据权利要求1所述的方法,其中在所述PDL打印作业中完成标记。
5.根据权利要求1所述的方法,其中通过从所述有组织的表示指向所述PDL打印作业的一部分来完成标记。
6.根据权利要求1所述的方法,其中有组织的表示产生小的形状因数(formfactor) 0
7.一种用于重新排序缺少打印作业页面独立性的页面描述语言(PDL)的设备,所述设备包括用于对所述PDL打印作业应用单个解析通路的装置; 用于检测PDL作业产生器的装置;用于检测所述PDL打印作业中的共用资源的装置和用于标记所述PDL打印作业中的共用资源的装置;用于检测、标记并且提取特征部分的装置; 用于检测并且标记所述PDL打印作业中的页面边界的装置; 用于记录为每个页面定义图形状态的命令的装置;用于根据所述PDL作业的所述检测步骤来产生有组织的表示而不用重新布置所述PDL 打印作业中的数据和资源的装置; 用于执行所述资源的装置;用于将图形状态命令置于所述页面之前的装置;以及用于发送所述经重新排序的页面的装置;
8.根据权利要求7所述的方法,其中通过Postkript解释器来解释所述页面特征部分以为所述PDL打印作业提供页面特性。
全文摘要
本发明描述了用于有效地处理缺少页面独立性的页面描述语言(″PDL″)数据流的方法和设备。所述方法和设备包括对PDL作业应用单个解析通路并且通过生成器嗅探器(83)来检测PDL作业产生器。通过资源嗅探器(85)来检测所述PDL作业中的共用资源。通过页面数据嗅探器(84)来检测所述PDL作业中的页面边界并且产生有组织的表示(63)而不用重新布置所述PDL作业中的数据和资源。所述系统有效地将PDL流组织成页面、数据和资源而不用重新布置所述流。所述有组织的数据能够被有效地提交给多个PDL处理器(65)。
文档编号G09G5/00GK102318003SQ201080007880
公开日2012年1月11日 申请日期2010年1月28日 优先权日2009年2月11日
发明者B·阿伦什塔姆, L·海恩 申请人:伊斯曼柯达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1