專利名稱:全面的打印作業(yè)構架創(chuàng)建的制作方法
技術領域:
本發(fā)明涉及用于根據打印系統(tǒng)、顯示系統(tǒng)、PDL分析系統(tǒng)和PDL轉換框架的需要從頁面描述語言(PDL)數(shù)據中有效地提取頁面特性的方法和設備。
背景技術:
Postkript語言已為本領域的普通技術人員所熟知。Postkript是包含一組豐富的命令的頁面描述語言(PDL),其被用于描述打印作業(yè)中的頁面。Postkript與例如 IPDS、PDF、PCL、PPML等其他PDL之間的主要差別在于其為程序設計語言。這提供了表達頁面內容的能力和靈活性,但是這種靈活性代價很高;在一般的Postkript作業(yè)中,頁面不容易解釋。為了正確地解釋頁面或對Postkript作業(yè)執(zhí)行有意義的變換,需要Postkript 解釋器。Adobe可配置Postkript解釋器(CPSI)是Postkript解釋器的一個示例,其處理PosUcript作業(yè)并且產生位圖。Adobe Distiller是PosUcript解釋器的另一示例,其處理PosUcript作業(yè)并且產生PDF文件而不是位圖。自PosUcript在1984年被推出以來,為了克服PosUcript語言的某些已知的限制,全世界的工程師已實現(xiàn)了許多技術。這些限制包括a)使Postkript作業(yè)不能以打印機額定速度被執(zhí)行的速度限制。b)不能將Postkript分成單獨的獨立頁面,如在多個中央處理單元(CPU)上并行地執(zhí)行頁面所需要的那樣。c)不能有效地打印所選擇的頁面,如有效的選擇頁面范圍重新打印所需要的那樣。為了理解性能問題的細節(jié)和習慣作法的性質以及在下文中所公開的本發(fā)明,對典型的Postkript解釋器的說明是必要的。Postkript作業(yè)的處理包括兩個(通常是重疊的)階段解釋階段和輸出階段。-PostScript是解釋語言。如同任何種類的解釋器(例如Perl、Java) —樣,在解釋期間解析Postkript作業(yè)并且創(chuàng)建內部作業(yè)結構。這個內部作業(yè)結構可能是高級或低級圖形對象的鏈表(或樹)、描述作業(yè)中的頁面的復雜狀態(tài)或任何其他專有的表示格式。-在輸出階段期間,處理所述內部作業(yè)結構,并且創(chuàng)建所需要的輸出。在打印系統(tǒng)的情況下,頁面被渲染而且柵格(例如原始位圖)被產生并且通常被傳送至打印機。在 Adobe Distiller的情況下,PDF文件被產生。也能夠使用類似的方式產生其他格式(例如 AFP/IPDS)。就所產生的數(shù)據的量而言,解釋過去被認為是輕松的階段,而渲染被認為是繁重的階段。包含文本和圖形的Postkript頁面的典型源數(shù)據大約為100KB。當以600 X 600dpi CMYK渲染時,典型的原始位圖頁面大約為100MB,這是所述源數(shù)據的1,000倍。這是自Postkript語言被推出以來,工程師們?yōu)榱颂^渲染而使用“寫入空設備 (null-device) ”的技術的原因。這項技術在所有版本的Adobe " PostScript Language Reference Manual (Postkript語言參考手冊)“中被描述。根據這項技術,能夠通過設置
3空設備來跳過頁面的渲染并且進而重新建立真實設備以恢復所述渲染。在使用這種方式的情況下,能夠通過解釋頁面并且跳過渲染來跳過頁面。在使用這種跳過機制的情況下,本領域的普通技術人員能夠實現(xiàn)頁面的并行處理,如圖1所描繪的那樣。圖1示出了四個處理器。在這種方式中,這四個處理器中的每一個都接收整個 PostScript作業(yè)11,并且每個處理器跳過一些頁面并且處理其他頁面。例如,第一處理器 12處理頁面1、5、9···,而第二處理器13將處理頁面2、6、10···,第三處理器14將處理頁面 3、7、11···,以及第四處理器15處理頁面4、8、12…。明顯地,這個負載平衡算法能夠被改進以將處理器的當前負載、頁面復雜度及其他特征考慮在內。這種負載平衡考慮適用于所有將來的圖。容易看到這種方式提供的增益。假定單CPU系統(tǒng)處理整個作業(yè)需要100秒。讓我們進一步假定解釋速度是渲染速度的4倍,這是相當合理的假定。根據這些假定,解釋花費 20秒,而渲染花費80秒。返回到圖1,每個處理器都相同地花費20秒用于解釋(每個處理器都需要解釋整個作業(yè)),但是只花費20秒用于渲染(每個處理器都只需要渲染四分之一的頁面)。在這種情況下,整個作業(yè)在40秒內被處理。這獲得了 2. 5倍的性能增益(100/40 =2. 5)。圖2示出了 8個處理器。使用單獨的處理器在解釋和渲染之間將處理分開。解釋器22將經解釋的Postkript流發(fā)送至渲染器26,由此獲得流水線并行操作(除了上文中的頁面并行操作以外)。使用上文中的數(shù)字并且考慮解釋階段和渲染階段是流水線式的 (并行地運行),整個作業(yè)在大約20秒內被處理。這獲得了 5倍的性能增益(100/20 = 5)。在其中解釋時間與渲染時間相比微不足道的情況下,圖2所示的方法是完全足夠的,如在早期打印時代那樣。但是自1984年以來,解釋/渲染平衡已發(fā)生了顯著的變化。變化包括a)為了使性能加快,公司已通過提供極其高效的渲染系統(tǒng)和專有硬件解決方案在渲染技術方面進行了相當大的投資;b)多CPU系統(tǒng)變得更加便宜。主流CPU技術的最新趨勢是一般的CPU現(xiàn)在包含表現(xiàn)如同獨立的CPU的多個處理核。能夠預期在不久的將來有8核、16核和32核的CPU。c)現(xiàn)今更多作業(yè)包含了非常復雜的圖形和大的圖像,這需要繁重的解釋。d)打印速度已被大大地提高,并且被測量為超過100甚至IOOOppm(每分鐘打印頁數(shù))。由于在上文中所描述的因素,其中每個處理器都解釋整個Postkript作業(yè)的對空設備的渲染變得不足以獲得高的引擎速度。換句話說,作為本質上順序的過程,解釋變成打印系統(tǒng)的瓶頸。例如,向圖2的圖示添加額外的處理器將不會提高性能,因為每個解釋器都將需要相同地花費20秒來解釋該作業(yè)。認識到圖2中的多個解釋器使每個作業(yè)重復,一個解決方案將是把解釋分離出來并且將它移至圖3所示的單獨的處理器。在這個圖示中,集中式解釋處理器32解釋 Postkript作業(yè)11并且產生某種內部作業(yè)結構(顯示列表),其包含獨立頁面33。獨立頁面33的顯示列表被發(fā)送至單個的渲染處理器34。與圖2所示的方式相比,這種方式的主要優(yōu)點在于僅需要5個CPU來獲得相同的性能。此外,在將更強大的CPU用于集中式解釋器處理器32的情況下,能夠稍微克服所述解釋瓶頸。
這種方式的嚴重缺點是其復雜度,將Postkript處理器分割成在單獨的節(jié)點上運行的獨立的解釋器和渲染器是一個復雜的程序。它需要顯著的代碼變化并且需要源代碼來執(zhí)行這些變化。然而,這種方式的主要缺陷在于解釋器仍然是瓶頸。在使用上述示例中所建議的數(shù)字的情況下,提高渲染處理器34的數(shù)量將不會提高性能。鑒于以上內容,提供消除解釋器這個瓶頸、由此提高系統(tǒng)的總速度的方法和設備將是所期望的。提供不需要對解釋器進行改動的方法和設備將是進一步所期望的。集中式解釋方式的變體是PDF方式,如圖4所示。在這種方式中,PostScript (PS) 作業(yè)11通過PS至PDF轉換器42被轉換為PDF。所創(chuàng)建的PDF作業(yè)43通過PDF分配器44 被分配至多個處理器45。有許多公用程序(utility)可用于將Postkript轉換為PDF。 AdobeDistiller可能是最有名的一個。還有許多用于將PDF作業(yè)43分配至多個處理器45的方式a)整個PDF文件能夠被發(fā)送至所有處理器。每個處理器都被告知渲染哪些頁面。b)PDF作業(yè)能夠被轉換為一系列單頁面PDF文件。這些單頁面PDF文件能夠被發(fā)送至處理器,由此每個處理器僅接收需要渲染的PDF頁面。c)PDF能夠被轉換為一系列單頁面PosUcript文件。這些單頁面PosUcript文件能夠被發(fā)送至處理器,由此每個處理器僅接收需要渲染的Postkript頁面。d)代替單PDF或Postkript頁面,頁面塊能夠被產生并且被分配至所需要的處理器,由此減少單頁面的潛在資源開銷。作為一種變體,整個作業(yè)能夠被分成等于處理器數(shù)量的若干部分(在我們的示例中為四個部分)。這些PDF方式是可行的過程并且在本行業(yè)內是已知的。同時,它們具有與在上文中所討論的“集中式解釋”方式相同的主要缺陷;由于PS-PDF轉換器是Postkript解釋器, 所以該轉換器變成瓶頸。此外,已知至PDF的轉換將對轉換器增加額外的顯著開銷,由此產生還要更大的瓶頸。這個瓶頸妨礙了通過添加額外的處理器來調節(jié)系統(tǒng)。返回到圖4,代替將Postkript轉換為PDF,其他轉換也是可能的。例如, PostScript M PostScript>PostScript M AFP PostScript M XPS。 {Si,^TIjfWSIi 的轉換器都是Postkript解釋器的實例,所以它們全部都具有與在上文中所討論的“集中式解釋”方式和“PDF方式”相同的主要缺陷;轉換器變成瓶頸,由此妨礙了通過添加額外的處理器來調節(jié)系統(tǒng)。鑒于以上內容,提供消除解釋器這個瓶頸、由此提高系統(tǒng)的總速度的方法和設備將是所期望的。此外,提供避免從Postkript至PDF或其他語言的轉換的方法和設備將是所期望的。認識到與Postkript作業(yè)的無特定結構的性質有關的問題,早在1986年 Adobe 就發(fā)布了" Adobe PostScript Language Document Structuring Conventions Specification Version 1 (Adobe PostScript 語言文檔構造協(xié)定規(guī)范版本 1) 〃(DSC 規(guī)范)。最知名的DSC規(guī)范3. O版在1992年發(fā)布。在該規(guī)范中有名為“并行打印”的單獨部分。這表明頁面并行打印是遵從DSC的Postkript作業(yè)的意圖之一。DSC規(guī)范定義了允許對PS資源容易地進行解析和重新布置頁面的一組標簽。而且,它要求如果產生器(producer)輸出"% ! PS-Adobe-3· O ",則其保證PosUcript文件是遵從DSC的。遺憾的是,現(xiàn)實是這樣的,幾乎所有主要的Postkript產生器都會插入"% ! PS-Adobe-3. 0 “,而這些文件很少是遵從DSC的。盡管如此,如實踐所示,能夠通過解析以得到DSC注釋和特定于產生器的模式而成功地將很大的一組Postkript作業(yè)分成獨立頁面。盡管這個過程相當復雜,但是自1988 年以來多個公司已經成功地使用了這種方式。例如,諸如Creo (Pr印s )和FaruWi等多個公司將這種方式用于執(zhí)行拼版(imposition),這是比獲得并行打印明顯更復雜的過程。 這些公司不僅能夠將多個主要供應商(vendor)所生成的Postkript變換成頁面獨立的 PostScript,而且他們還能夠將不同應用所產生的多個Postkript作業(yè)合并成一個拼版的Postkript作業(yè),由此獲得還要更高水平的頁面獨立性。同時,打印系統(tǒng)要求與拼版相比不同的必要條件a)打印系統(tǒng)預期比Postkript拼版軟件更可靠。所預期的是,它處理比拼版系統(tǒng)大得多的一組Postkript作業(yè)并且適度地就它使用DSC和模式識別方法不能處理的作業(yè)進行報告。b)打印系統(tǒng)需要比拼版軟件快得多。鑒于以上內容,提供比現(xiàn)有的基于DSC的系統(tǒng)明顯更可靠并且更快的方法和設備將是所期望的。圖5示出了作業(yè)并行方式。它致力于頁面并行方式的許多復雜和低效的方面。在這種方式中,多個處理器55并行地處理多個Postkript作業(yè)51。由于沒有單獨的解釋和拆分的固有開銷,這種方式對于很大的一組短作業(yè)而言是非常有效的;當一個作業(yè)完成打印時,另一作業(yè)被處理并且為打印做好準備。同時,這種方式不適合大的作業(yè);a)第一作業(yè)沒有從多個處理器獲益。b)作業(yè)處理器可以耗盡頁面存儲并且長時間保持空閑,等待打印機打印先前的作業(yè)。非常長的PosUcript作業(yè)使情況惡化,諸如Creo VPS或其他PosUcript專業(yè)用語(dialect)所表達的可變數(shù)據打印(VDP)作業(yè)。一個這樣的作業(yè)可以包含超過100,000 個頁面并且運行持續(xù)許多天。在這種情況下,作業(yè)并行方式一定將導致僅利用一個處理器, 而保持剩余的處理器空閑?;氐紻SC遵從性(DSC compliance),不遵從DSC的PosUcript的主要問題是缺少作業(yè)結構以及頁面相互關聯(lián)性。問題包括a)所述缺少作業(yè)結構意指在Postkript作業(yè)中的頁面之間缺乏嚴格的并且可容易識別的邊界。b)所述頁面相互關聯(lián)性意指每個頁面可能包含預期在頁面范圍之外存留的難以識別的資源。因此,人們可能會問為什么Postkript產生器不將所有資源都移到作業(yè)標頭 (header)中。答案是因為作業(yè)生成將需要兩個通路(pass),即分析通路和輸出通路。a)在分析期間,分析所有頁面以得到所需要的資源。b)在輸出通路期間,將資源寫入作業(yè)標頭部分中。只有在那之后才寫獨立頁面。由于通過應用以高的速度產生頁面與打印機消耗頁面一樣重要,并且考慮到在過去頁面獨立性不是Postkript產生器的必要條件,所以為什么Postkript作業(yè)中的頁面相互關聯(lián)是顯而易見的。
隨著諸如PPML等最現(xiàn)代的PDL的引入,所述情況已稍微改變。PPML是基于XML的 VDP語言,意指它是為獲得高的打印速度而特別設計的。PPML是由標準委員會PODi設計的, 該標準委員會包括所有主要的打印機-控制器制造商以及多個主要的文檔制作公司。關于作業(yè)結構,PPML通過要求強制性的XML標簽來解決這個問題。該標準規(guī)定a) PPML作業(yè)由文檔集合組成b)文檔集合由文檔組成,文檔包括頁面就頁面結構而言,PPML沒有解決頁面相互關聯(lián)性的問題。如同Postkript頁面一樣,PPML頁面可能包含預期在頁面范圍之外存留的資源。這是由以非常高的速度輸出PPML 頁面的需求所支配的、所有PODi成員有意識的決定,由此避免在數(shù)據上的兩個通路。結果, PPML頁面使資源和數(shù)據交替,如下所示BeginPagedata, resource, resource, data, data...EndPage與Postkript的唯一顯著差別是資源可容易地被識別。對PPML作業(yè)結構的理解將有助于理解現(xiàn)有的專利以及有助于理解本發(fā)明。這個領域中另外的現(xiàn)有技術包括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數(shù)據流的方法。它將定義打印作業(yè)的PDL數(shù)據流視為數(shù)據命令和控制命令的組合。數(shù)據命令描述了必須通過輸出設備再現(xiàn)的數(shù)據,諸如文本、圖形和圖像,而控制命令描述了數(shù)據必須如何被再現(xiàn),并且可以包括字體描述、頁面部分、形式和重疊。每個所產生的獨立數(shù)據流分段包括數(shù)據命令以描述包括在單個頁面或區(qū)域中的圖像,并且也包括控制命令以指示數(shù)據命令必須如何被解釋。PDL數(shù)據流被提交給將PDL數(shù)據流分成獨立的數(shù)據流分段的主進程,所述獨立的數(shù)據流分段通過多個子進程而被轉換成中間數(shù)據流部分。為了獲得分段獨立性,每個分段必須知道該分段的“翻譯狀態(tài)(translation state) ”,其由所有先前的控制命令組成。該方法需要對PDL流的全面了解,這只有通過解釋所述流才能夠獲得。認識到該解釋是瓶頸,本發(fā)明的實施例中的一個將這個解釋分配到多個子進程上。遇到翻譯狀態(tài)變化的任何子進程都向主進程報告這個變化。使用特殊的技術來使多個子進程所創(chuàng)建的狀態(tài)同步。除美國專利No. 5,652,711所描述的發(fā)明的復雜度之外,該專利沒有公開用于創(chuàng)建所述分段的機制。例如,在Postkript的情況下,沒有“數(shù)據命令”和“控制命令”的概念。 幾乎所有的圖形操作符都會改變解釋器的狀態(tài)。遺憾的是,該專利沒有提供從Postkript 操作符至數(shù)據/控制命令的映射。WO 04/110759也是適用于包括PosUcript在內的所有PDL的寬范圍的參考文獻。 其目標就是克服頁面相互關聯(lián)性。如同許多其他已知的技術一樣,每個頁面都被分成分段。 其新穎性在于每個所產生的分段由兩個新文件表示全局數(shù)據文件和分段數(shù)據文件。為了跳過頁面,需要執(zhí)行全局文件。為了打印頁面,需要執(zhí)行分段數(shù)據文件。遺憾的是,WO 04/110759沒有公開用于識別所述分段的機制。該參考文獻也沒有描述用于創(chuàng)建構成所述分段的全局數(shù)據文件和分段數(shù)據文件的機制。根據該參考文獻的說明書,考慮到該發(fā)明能夠識別并且提取“圖形對象”以及考慮到沒有對DSC和與DSC有關的專利的引用,可以假定基于解釋器的方式是隱含的,由此如在上文中所討論的那樣限制了系統(tǒng)的總吞吐量。美國專利No. 6,817,791描述了將PosUcript作業(yè)分成獨立頁面。分析 Postkript作業(yè)以得到資源(用該專利的話說為慣用語法(idiom));然后所述資源被提取并且被重新布置在打印作業(yè)的標頭中。進而,將該標頭置于每個頁面之前,由此使它包含所有必要的資源,從而使其獨立于其他頁面。每個標頭(即被附至頁面的標頭)包含在該頁面之前的所有資源,但是不包括該頁面的資源。如該專利所承認的那樣,這導致大的標頭被附至頁面。為了規(guī)避該問題,美國專利 No. 6,817,791引入了 “塊(chunk),,的概念;代替將作業(yè)分成獨立頁面,作業(yè)被分成獨立的塊。在這種方式中,標頭開銷被塊中的多個頁面分攤。所述塊可以與一個頁面一樣小或與整個作業(yè)一樣大。由于塊是獨立的,所以它們能夠以任何順序來處理并且能夠被分配至多個處理節(jié)點以用于并行處理,由此稱其為塊并行操作。關于塊并行操作,不清楚的是這種塊并行操作如何不同于其他廣為人知的塊并行操作方式。例如,早在1992年發(fā)布的〃 Adobe PostScript Language Document Structuring Conventions Specification Version 3 (Adobe PostScript 語目 ‘文檔構造協(xié)定規(guī)范版本3)“中就提及了塊并行操作“例如,用戶要求文檔的前100頁在5個單獨的打印機上并行地打印。文檔管理
器將該文檔分成每部分20頁的五個部分,為每個部分復制原始的開端(prolog)和文檔設
β ,,直。此外,該參考文獻建議了用于不遵從DSC的作業(yè)的反向打印的最佳方式?!吧晕⒏行У姆绞綄⑹峭ㄟ^整個文檔一次,找到應當已在標頭中但實際沒有的材料,并且將其增補至標頭,以及進而只公布該標頭一次,在其后面是按反向順序的所有頁本領域的普通技術人員知道所描述的方式將幾乎不起作用。這是因為每個頁面都可以包含“setfont”和從先前頁面?zhèn)鱽淼牟⑶也荒軌蛟凇皹祟^”中表明的其他Postkript 操作符。遺憾的是,由于與向每個頁面添加標頭有關的嚴重的效率原因,不能夠使用非最佳的方式??傊?,不清楚的是如何使用該參考文獻來實現(xiàn)有效的反向打印。但是,美國專利No. 6,817,791的主要問題是將資源標頭置于每個頁面之前的開銷。這項開銷將產生使用頁面并行操作的文本處理方式的次優(yōu)性能。替代性的塊方式將或者導致次優(yōu)負載平衡(如果塊太大),或者導致大的標頭開銷(如果塊太小),以及發(fā)明復雜的方案以根據頁面復雜度、作業(yè)量、系統(tǒng)中的資源、當前系統(tǒng)負載及其他因素來估計最優(yōu)的塊大小的需求。鑒于以上內容,提供可實現(xiàn)以下各項的方法和設備是所期望的1.避免累積的標頭開銷,2.使用頁面并行操作,由此避免前述的塊大小估計復雜度,
3.獲得有效的范圍打印,以及4.獲得可靠的頁面反向。本發(fā)明克服了上述及其他問題。
發(fā)明內容
本發(fā)明提供了用于有效地處理缺少頁面獨立性的PDL數(shù)據流(作業(yè))的方法和設備。所述系統(tǒng)有效地將作業(yè)組織成頁面、數(shù)據和資源。有組織的作業(yè)具有以下好處1.有組織的作業(yè)提供原始作業(yè)的高級結構。這種結構對于作業(yè)分析、報告、預檢、 拼版決定及其他處理是有幫助的。2.有組織的作業(yè)能夠被提交給多個PDL處理器以用于有效的頁面并行處理。3.能夠有效地打印選擇的頁面或頁面范圍。4.頁面能夠被有效地重新布置以用于獲得頁面反向的打印及其他順序。5.能夠提取一組全面的頁面特性。有組織的作業(yè)具有以下特性1.有組織的作業(yè)不重新布置原始作業(yè)的數(shù)據和資源。2.有組織的作業(yè)能夠使用多種格式有效地封裝以滿足工作流、存儲、性能及其他需求。3.最有效的封裝能夠通過將有組織的作業(yè)表示成單獨的外部結構來獲得,類似于使用指針或偏移來指向原始Postkript作業(yè)的分段的目錄,由此保留原始作業(yè)并且避免寫經修改的作業(yè)的開銷。在Postkript作業(yè)的情況下,本發(fā)明使用DSC處理和文本解析。
圖1是示出了使用空設備的頁面的并行處理的示意圖。圖2是示出了使用空設備的頁面的兩階段流水線并行處理的示意圖。圖3是示出了基于顯示列表的集中式解釋的示意圖。圖4是示出了用于頁面并行操作的PDF方式的示意圖。圖5是示出了作業(yè)并行方式的示意圖。圖6是示出了一般的處理圖示的示意圖。圖7是示出了將資源分至資源存儲裝置的示意圖。圖8是示出了組織器部件的示意圖。
具體實施例方式本發(fā)明的這個詳細說明將允許本領域的普通技術人員以本發(fā)明的完整表達來實現(xiàn)本發(fā)明,但不限制實施者在獲得最佳可能的性能和最有效地處理所有所需要的產生器的能力時的創(chuàng)造。雖然結合了實施例中的一個對本發(fā)明進行了描述,但是將理解的是無意把本發(fā)明限定到這個實施例。相反地,旨在包括所附權利要求所包括的所有替代方案、修改和等同物。
使用多個處理器為Postkript作業(yè)和基于Postkript的VDP作業(yè)獲得最高可能的速度是復雜的任務并且對于其沒有好的“數(shù)學答案”。這是本發(fā)明基于由本領域中的廣泛經驗證實的一些結論的原因1.頁面并行打印不需要頁面獨立性。頁面并行打印僅需要具有明確的“資源標記” 的“頁面分離”。頁面分配器需要將整個頁面發(fā)送至渲染這個頁面的處理器或者僅將在這個頁面上所定義的資源發(fā)送至不渲染這個頁面的其他處理器。這就是根據設計不是頁面獨立的PPML理想地適于獲得有效的頁面并行操作的原因。2.使用作業(yè)并行操作能夠最有效地處理短作業(yè)。短作業(yè)的定義取決于系統(tǒng)處理器的數(shù)量、打印機速度、預期的作業(yè)復雜度等等。對于一些系統(tǒng)而言,短作業(yè)被定義為具有多達四個頁面,而對于一些其他系統(tǒng)而言,短作業(yè)可以被定義為具有多達100個頁面或者還要更多。3.資源的集中度在中型或大型Postkript作業(yè)內迅速下降。就是說,大部分資源在第一頁面之前或在第一頁面內被定義。第二頁面通常包含比第一頁面更少的資源。第三頁面通常包含比第二頁面還要更少的資源。在其中作業(yè)包含500個頁面的情況下,頁面 250包含任何資源是不太可能的。對于包含超過100,000個文檔的典型的基于Postkript 的VDP作業(yè)而言,在前100個文檔之外有任何資源是相當不可能的。根據上述結論,本發(fā)明的主要目的在于通過有效地標記作業(yè)中的頁面、文檔和資源來組織該作業(yè)以用于至多個處理節(jié)點的有效分配。參考圖6,組織頁面的部件是作業(yè)組織器62,其接收Postkript作業(yè)11并且產生有組織的作業(yè)63。將有組織的作業(yè)分配至多個 PDL處理器65的部件被稱為分配器64。本發(fā)明的一個方面是組織器不需要重新布置作業(yè),其可以將所有數(shù)據和資源保持在原位。這就是本發(fā)明與其他發(fā)明的區(qū)別并且這產生拆分和并行處理的空前速度。事實上, 在本發(fā)明的實施例的一個中,有組織的作業(yè)被表示為原始作業(yè)的部分的參考列表(目錄)。 為了理解和懂得這段敘述,考慮有組織的作業(yè)的可能的組織和封裝。有組織的作業(yè)被表示為多個順向的(consequent)分段。這些分段使用元數(shù)據來定義作業(yè)結構,并且包含作業(yè)數(shù)據。每個分段都由標簽定義并且需要以下七個標簽-BeginJob-EndJob-BeginDoc-EndDoc-BeginPage-EndPage-Data對于純粹的Postkript作業(yè)而言,僅需要這五個標簽。包含一個文檔并且該文檔包含兩個頁面的簡單的有組織作業(yè)的示例將包括以下標簽BeginJobDataBeginDocBeginPageDataEndPageData
BeginPageDataEndPageEndDocEndJob有組織的作業(yè)的正規(guī)描述為job = BeginJob, [doc|Data]氺,EndJobdoc = BeginDoc, [page|Data]EndDocpage = BeginPage, [Data]EndPage上述正規(guī)描述的語言描述為-作業(yè)通過BeginJob標簽和EndJob標簽被封裝并且包含多個doc和Data分段。-文檔(doc)(或按VPS術語為小冊子(booklet))通過BeginDoc標簽和EndDoc 標簽被封裝并且包含多個頁面和數(shù)據分段。-頁面通過BeginPage標簽和EndPage標簽被封裝并且包含多個Data段。類似于PPML,數(shù)據可以包含明確的范圍。該范圍能夠是頁面、文檔、作業(yè)和全局。 資源被定義為具有比當前范圍更高的范圍的數(shù)據。例如,如果數(shù)據定義在頁面內并且具有作業(yè)范圍,則其為資源。閱讀器將懂得資源的常規(guī)定義(與P0Stkript、PPML及其他PDL 中的資源定義一致)。有組織的作業(yè)適于頁面并行分配以及適于文檔并行分配。分配器根據以下規(guī)則分派有組織的作業(yè)以用于頁面并行處理-范圍=全局、作業(yè)和文檔的數(shù)據被分配至被指派用于處理這個作業(yè)的所有處理
ο-對于給定的頁面,范圍=頁面的數(shù)據僅被分配至一個處理器一即被指派用于處理這個頁面的處理器。分配器根據以下規(guī)則分派有組織的作業(yè)以用于文檔并行處理-范圍=全局和作業(yè)的數(shù)據被分配至被指派用于處理該作業(yè)的所有處理器。-對于給定的文檔,范圍=文檔和頁面的數(shù)據僅被分配至一個處理器一即被指派用于處理這個文檔的處理器。有組織的作業(yè)能夠被封裝以滿足系統(tǒng)的存儲和性能需求-能夠使用XML來封裝有組織的作業(yè)。每個分段都被表示為XML構造。這類似于 PPML (具有與二進制數(shù)據有關的所有已知問題)。-更有效的封裝將標簽和長度格式用于每個分段。這類似于諸如TAR格式等已知的格式,并且允許有效的二進制表示。-還要更有效的封裝被表示為單獨的外部結構,類似于包含標簽并且使用指針或偏移來指向原始Postkript作業(yè)的分段的目錄。這證明本發(fā)明的權利要求中的一個是正確的,即在本發(fā)明的一個實施例中,整個作業(yè)被維護。這是在Postkript作業(yè)變換技術中不為人知的獨特表示并且其僅作為本發(fā)明的結果而可用。一些實現(xiàn)可能發(fā)現(xiàn)保持公共資源74的全部或一些駐留在共用的資源存儲裝置75 中是更有利的,在作業(yè)組織器62、分配器64、處理器66之間共用存儲裝置,對于其他系統(tǒng)節(jié)點也是如此,如圖7所描繪的那樣。
例如,一些系統(tǒng)可以從將全局VDP對象存儲在共用的資源存儲裝置75中獲益,而其他系統(tǒng)可以從將所有的VDP可重復使用的對象存儲在共用的資源存儲裝置75中獲益,并且其他系統(tǒng)可以從將所有或一些Postkript資源存儲在共用的資源存儲裝置75中獲益。 這樣做的好處是將資源保持在中心位置并且減少有組織的作業(yè)的大小。一些系統(tǒng)可以從其中將上述存儲的資源從有組織的作業(yè)中移除的創(chuàng)建有組織的作業(yè)中獲益,而一些系統(tǒng)可以從將有組織的作業(yè)表示為指回到原始作業(yè)的有效外部結構中獲益。在任何一種情況下,重要的是理解在產生有組織的表示時本發(fā)明不重新布置原始作業(yè)的數(shù)據/資源。以下是關于全局范圍資源的一些考慮。類似于PPML,全局范圍被用于定義和維持作業(yè)之間的全局資源。這是全局范圍的主要和常規(guī)的目的。但是在本發(fā)明的實施例的一個中,全局范圍被用于表示無保護的Postkript作業(yè),即改變Postkript解釋器的固定狀態(tài)的作業(yè)。在使用上文所描述的分配邏輯的情況下,每個節(jié)點將接收所有的數(shù)據(因為它具有全局范圍)。為了抵消'showpage'操作符的影響(否則那可能導致由每個節(jié)點打印所有頁面),許多廣為人知的技術能夠被使用(重新定義showpage、建立空設備以及更多)。 提出處理無保護作業(yè)的這個實施例,依靠本發(fā)明的用于處理無保護的Postkript作業(yè)的其他方式可以是可行的。閱讀器必須懂得有組織的作業(yè)的高度的流式性質(streaming nature)。就是說, 頁面的分段能夠在它們被標記(這甚至最經常發(fā)生在頁面被組織之前)之后立即被分配至處理器。僅僅需要貫穿整個作業(yè)的一個通路來組織和分配該作業(yè)。盡管本發(fā)明的優(yōu)選實施例不重新布置作業(yè)中的資源并且將它們保持在它們被發(fā)現(xiàn)的地方,但將理解的是重新布置資源并且將它們移到有組織的作業(yè)中的其他地方或甚至移到該作業(yè)的外部都不改變本發(fā)明的精神。見圖7。例如,本發(fā)明的實施例可以將資源從資源在其中被發(fā)現(xiàn)的頁面內移到這個頁面的前面(為了美學原因或為了其他的原因)。盡管這很可能使該實施例的效率降低,但是其仍然比將所有資源都累積到標頭中并且將這樣的標頭置于每個頁面之前明顯更有效,如尋求頁面獨立性的應用中的一些所做的那樣。由于有組織的作業(yè)允許有效的頁面跳過,所以本發(fā)明允許有效的頁面并行頁面范圍處理。重新布置或顛倒作業(yè)中的頁面是更復雜的程序。在并行頁面打印領域內的其他發(fā)明或者不解決這個問題,諸如WO 04/110759,或者提供非常有限的解決方案,諸如美國專利 No. 6,817,791,這將對很大一部分文件不起作用。為了討論的目的,將集中在反向打印上, 其為頁面重新布置的最壞情況。通過以下技術來獲得反向打印1.執(zhí)行整個通路以組織作業(yè)。這將標記頁面-邊界和資源。2.在上述通路期間,還收集影響存留在頁面之間的圖形狀態(tài)并且使其與每個頁面相關聯(lián)的所有特定于產生器的慣用語法。這樣的慣用語法的示例將是Windows驅動器所產生的〃 fontname Ji"命令。這個命令將字體設置為'fontname'。注意,這非常不同于收集和累積資源例如,在Windows驅動器的情況下,每個頁面僅需要將最后的'Ji'命令與頁面相關聯(lián)(不是如對于資源那樣將所有先前的'Ji'命令與資源相關聯(lián))。結果,這個相關聯(lián)的狀態(tài)極其小(通常被測量為幾百個字節(jié)或甚至更小)。3.執(zhí)行所有資源。這創(chuàng)建了適當?shù)腜ostkript虛擬內存(VM)狀態(tài)。4.以反向順序將頁面分配至處理節(jié)點。在分配頁面之前,添加微小的標頭,其設置圖形狀態(tài)的所需要的部分。上述方式將對非常大范圍的打印作業(yè)起作用。在結合附圖閱讀以下詳細說明時,本發(fā)明的這些及其他目的、特征和優(yōu)點對于本領域的技術人員將變得顯而易見,在所述詳細說明中示出和描述了本發(fā)明的示意性實施例。組織器部件以流處理形式解析原始作業(yè)、對其進行分析、補償DSC不遵從性 (non-DSC-compliance)并且輸出適于至多個處理節(jié)點的有效分配的結構良好的有組織作業(yè)。為了成功地組織由大量不同的產生器所產生的大量作業(yè),本發(fā)明的優(yōu)選實施例包含圖 8所示的部件。在不改變本發(fā)明的性質的情況下,能夠對這些部件重新命名,能夠重新布置這些部件的職責,將這些部件分成多個子部件,并且這些部件中的一些甚至被移除。能夠逐行、逐標記及按照其他粒度來完成解析,但為了描述方便,將對通過行來解析進行參考。以流處理形式分析原始作業(yè)中的每一行。如果行以"%%"開始,則它是DSC 行的候選。某種簡單的附加處理足以提高這確實是DSC行的可能性。如果行被錯誤地識別為DSC行(例如在二進制數(shù)據內的行可能看起來像正確的DSC行),這并不是問題;它將匹配任何正確并且預期的DSC的概率是可以忽略的(在廣泛的測試中未遇到)。DSC行是重要的并且有助于執(zhí)行一般的DSC處理、有助于識別作業(yè)的生成器、有助于識別作業(yè)的結構并且甚至有時有助于檢測資源。如在上文中所提及的那樣,大部分Postkript作業(yè)是不遵從DSC的。但是,通常每個產生器以特定于產生器的可預測方式來打破DSC遵從性。這是因為每個產生器作為有限程序僅可以產生有限數(shù)量的輸出模式。為了組織Postkript作業(yè)以用于有效的并行處理,組織器需要補償這種DSC不遵從性。這通過分析作業(yè)數(shù)據來完成。為了獲得DSC不遵從性的正確并且有效的補償,組織器需要識別產生器(也被稱為“生成器(creator)”)。對于字產生器需要一些說明。說產生器是XyzSoft通常是不夠的。它需要被進一步澄清為使用Windows驅動器的XyzSoft、或使用LaserWriter驅動器的XyzSoft或使用本地代碼生成的XyzSoft。所有這些輸出通常是非常不同的。有時,甚至需要表明XyzSoft 的版本以及Windows驅動器的版本等等。這就是產生器需要通過可以包括應用名稱、驅動器名稱、版本等的完整標識集合來識別的原因。這可以產生大量的組合。減少這種組合性爆炸的一種方式是利用通常(并非始終這樣)XyzSoft模式是相同的,獨立于所使用的驅動器的事實。這是具有分別分析XyzSoft 模式、Windows模式、LaserWriters模式等單獨的一組部件是可取的原因。我們將把這樣的特定部件稱為“產生器-處理器”(不會與渲染作業(yè)的多個處理器混淆)。至于產生器術語,更精確的是談論應用/驅動器組合。還要更好的是使用術語產生器鏈路(producer-chain),這適應不同的情況包括本地產生器(所述鏈路中的元件數(shù)量等于1)、應用/驅動器組合(所述鏈路中的元件數(shù)量等于幻以及甚至當所述鏈路中的產生器數(shù)量大于2時的某些潛在情況。一般處理流程在抽點打印(snapshot)中,組織器逐行解析Postkript作業(yè)。起初,產生器鏈路是空的(產生器是未知的)。通用DSC處理82被使用。在某個時刻,組織器81檢測產生器鏈路中的第一元件。為了進一步討論,讓我們假定它是LaserWriters驅動器。自那個時刻起,每一行都被提交給LaserWriters處理器 (產生器-處理器的實例)。LaserWriters處理器執(zhí)行對每一行的快速分析。為了丟棄不感興趣的行,通常分析在該行起始處和在該行末尾處的幾個字節(jié)就足夠了。產生器-處理器對大部分行是不感興趣的。但是,如果對該行具有潛在的興趣,則執(zhí)行更詳盡的處理。如果該行被資源嗅探器 (sniff er) 85識別為資源模式,則產生器-處理器調用某個特定于產生器-處理器的邏輯并且標記該資源。這個特定于產生器-處理器的邏輯涉及向后搜索該資源的起始和向前搜索該資源的末尾。資源被找到并且處理器通知組織器關于該資源的起始位置和結束位置。組織器根據在上文中所討論的封裝方案來標記資源并且在該資源之后立即使其位置前進。這樣結束對這個資源的處理。如果產生器-處理器未識別該行,則它有效地返回。組織器進而使用一般的DSC 處理器邏輯(在下文中描述)來處理該行。這種方式的優(yōu)勢在于每個產生器-處理器都能夠在有需要的情況下重寫通用DSC 處理器的默認行為,而同時依靠通用DSC處理器的能力來處理大部分的行。以這種方式,每個產生器-處理器都能夠以補償特定的DSC不遵從性所需要的最少數(shù)量的代碼行來實現(xiàn); 更兼容的產生器則導致更簡單的產生器-處理器實現(xiàn)。繼續(xù)該示例,組織器檢測應用(驅動器LaserWriter在先前階段被檢測)。為了特異性(specificity),比如說它是Adobe Acrobat。組織器安裝這個應用作為產生器鏈路中的第二元件。自這點起組織器將把每一行提供給產生器鏈路中的每個產生器-處理器-組織器將把行提供給AdobeAcrobat ;-如果該行被拒絕,則組織器將把該行提供給LaserWriters;-如果該行被拒絕,則組織器將使用通用DSC處理器來對其進行處理。通用DSC處理器在圖8中,通用DSC處理器82負責一般的DSC處理流程,如〃 Adobe PostScript Language Document Structuring Conventions Specification (Adobe PostScript 語目 .文檔構造協(xié)定規(guī)范)“所定義的那樣。雖然不能夠依賴DSC遵從性(如能夠在上文的“一般處理流程”說明中所看到的那樣),但是通用DSC處理器是非常重要的部件。它實現(xiàn)組織器的默認行為并且使每個產生器-處理器盡可能小并且易于實現(xiàn)。通用DSC處理器執(zhí)行諸如分析作業(yè)標頭、分析作業(yè)開端、分析作業(yè)默認值、分析資源、分析procset、找到頁面邊界、找到作業(yè)尾部等操作以及對于一般的DSC處理所需要的許多其他操作,如〃 Adobe Document Structuring Conventions Specification(Adobe文檔構造協(xié)定規(guī)范)〃所描述的那樣。另外,它可以執(zhí)行不是對于組織作業(yè)以用于并行處理所嚴格需要的其他特定于實現(xiàn)的功能。生成器嗅探器生成器嗅探器83負責識別產生器鏈路。如上文所提及的那樣,更精確的不是僅談論單個生成器或單個產生器,而相反地是談論由多個產生器組成產生鏈路。使用% % Creator DSC—般不可靠。最可靠的方式是分析ftxx^et,即定義對于特定產生器所需要的PosUcript程序的PosUcript作業(yè)中的特殊部分。這樣,如果作業(yè)是由LaserWriters 驅動器所產生的,則組織器將在某個點遇到LaserWriterSProcSet。如果作業(yè)是由AdobeAcrobat應用所產生的,則組織器將在某個點遇到Adobe Acrobat ProcSet0在假定的示例中,如果它是由XyzSoft所產生的,但是沒有XyzSoft ftOdet,則其簡單地意指XyzSoft在這個作業(yè)中沒有使用任何特定的XyzSoft資源,并且因此,不需要分析XyzSoft模式??紤]到產生器的多樣性,在某些情況下在確定產生器時分析Creator DSC及其他DSC仍然是有利的。頁面數(shù)據嗥探器頁面數(shù)據嗅探器84負責對是否將整個頁面標記為資源做出決定。明顯地,這個邏輯對于每個產生器是不同的。如經驗所示,例如在多個Postkript拼版封裝中,對于給定的產生器而言,始終能夠實現(xiàn)檢測并且提取由這個產生器所使用的資源的部件。應理解的是,往往這不簡單;需要投資大量的工程時間。對于Postkript拼版應用以及對于尋求頁面獨立性的其他方式而言,沒有其他可行的選項;必須檢測并且提取資源。這是這樣的應用通常使用以下兩種方式的原因1)投入極大的精力來處理多個產生器;以及2、限制所支持的產生器的數(shù)量。本發(fā)明不尋求頁面獨立性,其有另一選項由其支配。如實踐所示,識別資源在頁面上的存在比提取或標記它們明顯更容易。這是本發(fā)明的實施者在某些情況下可以選擇在頁面上快速通過并且如果找到資源,則可以選擇將整個頁面標記為資源的原因。考慮上文中的陳述,即“資源的集中度在作業(yè)內迅速下降”,本發(fā)明的這個部分允許在非常短的時間內實現(xiàn)本發(fā)明的非常合理的實施例。明顯地,本發(fā)明的更詳盡的實施例將謹慎地使用上述簡化操作并且將嘗試為最重要的產生器實現(xiàn)資源標記。頁面設置嗅探器頁面設置嗅探器89負責識別包含每個頁面的頁面特性的部分(pagedevice設定)。這樣的特性的示例是PageBoundingBox、PaPerWeight、PaperColor等。在簡單的情況下,這樣的部分通過% % BeginPageSetup-%% EndPageSetup對來確定界限。但是對于某些產生器而言,需要額外的解析。能夠徹底地分析所提取的I^gektup部分以得到 setpagedevice 命令。更可靠并且有效的方式是從PDL數(shù)據中提取I^gektup部分并且使用Postkript 解釋器連同所需要的作業(yè)資源一起來執(zhí)行I^agektup部分。能夠通過setpagedevice的典型的重新定義來得到pagedevice設定。例如,能夠對setpagedevice重新定義而以XML形式輸出pagedevice關鍵字/值??紤]到僅一小部分原始Postkript文件被執(zhí)行,所描述的檢測頁面特性的過程是極其快的。資源嗅探器資源嗅探器85負責識別和標記資源。在上文中描述了資源嗅探(resource sniffing)。實施者應預期大部分時間被花費在實現(xiàn)特定于產品的資源嗅探器,除非使用了上述資源-頁面簡化操作??紤]多個拼版實現(xiàn),本領域的普通技術人員能夠實現(xiàn)有效地實現(xiàn)本發(fā)明所需要的資源嗅探。圖像嗅探器圖像嗅探器86負責檢測圖像邊界并且有效地跳過圖像。圖像可能是非常大的,而識別并且有效地跳過它們是有利的。明顯地,通用DSC處理器82的邏輯被用于根據DSC協(xié)定來跳過圖像。這個邏輯需要通過特定于產生器的模式識別邏輯來擴大以適應DSC不遵從性。EPS嗥探器EPS嗅探器87負責檢測Postkript作業(yè)內部的封裝Postkript(EPS)邊界并且有效地跳過EPS。遺憾的是,某些產生器不使用用于嵌入EPS片段的DSC機制。未能從資源解析中識別EPS和跳過EPS可能導致不正確的解析(例如產生額外頁面或標記導致資源沖突的額外資源)。這是需要特殊的特定于產生器的模式識別邏輯來嗅探EPS的原因。圖形狀杰嗥探器圖形狀態(tài)嗅探器88負責收集影響持續(xù)的圖形狀態(tài)的所有特定于產生器的慣用語法。這種特定于產生器的嗅探器被需要以收集影響在頁面之間存留的圖像狀態(tài)并且使其與每個頁面相關聯(lián)的所有特定于產生器的慣用語法,如在上文中所討論的那樣。這樣的慣用語法的示例是由Windows驅動器所產生的"fontname Ji “命令,其為在頁面范圍之外存留的PosUcript的'setfont'命令的別稱。部件列表11PostScript 作業(yè)
12第一處理器
13第二處理器
14第三處理器
15第四處理器 22解釋器
26渲染器
32集中式解釋器處理器
33獨立頁面
34渲染處理器
42PostScript 至 PDF 轉換器
43PDF作業(yè)
44PDF分配器
45多個處理器
51多個PostScript作業(yè)
55多個處理器
62作業(yè)組織器
63有組織的作業(yè)
64分配器
65多個PDL處理器
66處理器
74公共資源
75共用的資源存儲裝置
81組織器
82通用DSC處理器
83生成器喚探器
84頁面數(shù)椐嗅探器85資源喚探器
86圖像喚探器
87EPS嗅探器
88圖形狀態(tài)喚探器
89頁面設置喚探器
權利要求
1.一種用于組織缺少頁面獨立性的頁面描述語言(PDL)打印作業(yè)的方法,其中不要求被組織的PDL打印作業(yè)是頁面獨立的并且被組織的PDL打印作業(yè)能夠被有效地分開以及被多個處理器處理,所述方法包括下列步驟對所述PDL打印作業(yè)應用單個解析通路; 檢測PDL作業(yè)產生器;檢測并且標記所述PDL打印作業(yè)中的共用資源; 檢測、標記并且提取頁面特征部分; 檢測并且標記所述PDL作業(yè)中的頁面邊界;以及根據所述PDL打印作業(yè)的所述檢測步驟產生有組織的表示而不用重新布置所述PDL打印作業(yè)中的數(shù)據和資源。
2.根據權利要求1所述的方法,其中通過Postkript解釋器來解釋所述頁面特征部分以為所述PDL打印作業(yè)提供頁面特性。
3.根據權利要求1所述的方法,其中所述PDL打印作業(yè)是Postkript作業(yè)。
4.根據權利要求1所述的方法,其中在所述PDL打印作業(yè)中完成標記。
5.根據權利要求1所述的方法,其中通過從所述有組織的表示指向所述PDL打印作業(yè)的一部分來完成標記。
6.根據權利要求1所述的方法,其中有組織的表示產生小的形狀因數(shù)(formfactor) 0
7.一種用于重新排序缺少打印作業(yè)頁面獨立性的頁面描述語言(PDL)的設備,所述設備包括用于對所述PDL打印作業(yè)應用單個解析通路的裝置; 用于檢測PDL作業(yè)產生器的裝置;用于檢測所述PDL打印作業(yè)中的共用資源的裝置和用于標記所述PDL打印作業(yè)中的共用資源的裝置;用于檢測、標記并且提取特征部分的裝置; 用于檢測并且標記所述PDL打印作業(yè)中的頁面邊界的裝置; 用于記錄為每個頁面定義圖形狀態(tài)的命令的裝置;用于根據所述PDL作業(yè)的所述檢測步驟來產生有組織的表示而不用重新布置所述PDL 打印作業(yè)中的數(shù)據和資源的裝置; 用于執(zhí)行所述資源的裝置;用于將圖形狀態(tài)命令置于所述頁面之前的裝置;以及用于發(fā)送所述經重新排序的頁面的裝置;
8.根據權利要求7所述的方法,其中通過Postkript解釋器來解釋所述頁面特征部分以為所述PDL打印作業(yè)提供頁面特性。
全文摘要
本發(fā)明描述了用于有效地處理缺少頁面獨立性的頁面描述語言(″PDL″)數(shù)據流的方法和設備。所述方法和設備包括對PDL作業(yè)應用單個解析通路并且通過生成器嗅探器(83)來檢測PDL作業(yè)產生器。通過資源嗅探器(85)來檢測所述PDL作業(yè)中的共用資源。通過頁面數(shù)據嗅探器(84)來檢測所述PDL作業(yè)中的頁面邊界并且產生有組織的表示(63)而不用重新布置所述PDL作業(yè)中的數(shù)據和資源。所述系統(tǒng)有效地將PDL流組織成頁面、數(shù)據和資源而不用重新布置所述流。所述有組織的數(shù)據能夠被有效地提交給多個PDL處理器(65)。
文檔編號G09G5/00GK102318003SQ201080007880
公開日2012年1月11日 申請日期2010年1月28日 優(yōu)先權日2009年2月11日
發(fā)明者B·阿倫什塔姆, L·海恩 申請人:伊斯曼柯達公司