JP6746326B2 - 印刷データの解釈を複数の解釈手段で行う印刷装置、印刷方法、プログラム - Google Patents

印刷データの解釈を複数の解釈手段で行う印刷装置、印刷方法、プログラム Download PDF

Info

Publication number
JP6746326B2
JP6746326B2 JP2016029523A JP2016029523A JP6746326B2 JP 6746326 B2 JP6746326 B2 JP 6746326B2 JP 2016029523 A JP2016029523 A JP 2016029523A JP 2016029523 A JP2016029523 A JP 2016029523A JP 6746326 B2 JP6746326 B2 JP 6746326B2
Authority
JP
Japan
Prior art keywords
page
interpreter
pdl
control unit
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016029523A
Other languages
English (en)
Other versions
JP2017144673A (ja
Inventor
秀一 竹中
秀一 竹中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2016029523A priority Critical patent/JP6746326B2/ja
Priority to US15/430,186 priority patent/US10534986B2/en
Publication of JP2017144673A publication Critical patent/JP2017144673A/ja
Application granted granted Critical
Publication of JP6746326B2 publication Critical patent/JP6746326B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1801Input data handling means
    • G06K15/181Receiving print data characterized by its formatting, e.g. particular page description languages
    • G06K15/1811Receiving print data characterized by its formatting, e.g. particular page description languages including high level document description only
    • G06K15/1813Page description language recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1801Input data handling means
    • G06K15/1803Receiving particular commands
    • G06K15/1805Receiving printer configuration commands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1801Input data handling means
    • G06K15/1803Receiving particular commands
    • G06K15/1806Receiving job control commands
    • G06K15/1807Receiving job control commands relating to the print image preparation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1801Input data handling means
    • G06K15/1803Receiving particular commands
    • G06K15/1806Receiving job control commands
    • G06K15/1809Receiving job control commands relating to the printing process
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1801Input data handling means
    • G06K15/1822Analysing the received data before processing
    • G06K15/1823Analysing the received data before processing for evaluating the resources needed, e.g. rasterizing time, ink, paper stock
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1848Generation of the printable image
    • G06K15/1856Generation of the printable image characterized by its workflow
    • G06K15/1857Generation of the printable image characterized by its workflow involving parallel processing in the same printing apparatus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1867Post-processing of the composed and rasterized print image
    • G06K15/1868Post-processing of the composed and rasterized print image for fitting to an output condition, e.g. paper colour or format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1867Post-processing of the composed and rasterized print image
    • G06K15/1872Image enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/40Details not directly involved in printing, e.g. machine management, management of the arrangement as a whole or of its constitutive parts
    • G06K15/4025Managing optional units, e.g. sorters, document feeders
    • G06K15/403Managing optional units, e.g. sorters, document feeders handling the outputted documents, e.g. staplers, sorters

Description

本発明は、印刷データの解釈を複数の解釈手段で行う技術に関する。
従来から、複数のインタプリタ(解釈手段)を用いてページ単位で並列してPDLデータを処理する印刷装置がある。特許文献1に開示される印刷装置では、複数のインタプリタが異なるページのPDLデータを並列に解釈し、それらページの中間データを生成する。例えば第1のインタプリタが、1ページ目に含まれるPDLコマンドの解釈とその中間データの生成を行い、第2のインタプリタが、2ページ目について、同様の処理を行う。そして、ラスタライザ−が中間データをラスタライズしてラスターイメージを生成し、全ページのラスタライズが終了する前に、ラスターイメージが生成されたページの印刷を適時開始することで、印刷完了を早める。
特許文献2に開示される印刷装置は、複数のインタプリタが、別々のページを解釈して中間データを生成する際に、それぞれのページに含まれる印刷設定コマンドを解釈してその解釈された印刷設定にしたがってそれぞれのページの中間データを生成する。
特開2013−14039号公報 特開2010−149422号公報
PDLコマンドには、全ページ(印刷ジョブ全体)に対して所定の処理を適用することを指示する印刷設定コマンド(ジョブ属性のPDL指定とも呼ばれる)がある。例えばステープル綴じ処理を全ページに対して適用することを指示するステープル綴じ指定のコマンドがジョブ属性のPDL指定の一例である。そのようなPDLコマンドが含まれているPDLデータを、従来の印刷装置のように、複数のインタプリタで並列して処理する場合を考えてみる。
例えば1ページ目にステープル綴じ指定のコマンドが含まれる場合、第1のインタプリタが1ページ目を解釈してステープル綴じ処理の設定を有効にする。このとき、第1のインタプリタによる1ページ目の処理が第2のインタプリタによる2ページ目よりも遅くても、印刷装置は、2ページ目を1ページ目よりも後に印刷するように制御するので、第2のインタプリタが処理する2ページ目にも綴じ処理を適用できる。つまり、1ページ目にステープル綴じ指定のコマンドが含まれていれば、2ページ目(以降)にもステープル綴じ処理を適用できる。
一方、2ページ目のみにステープル綴じ指定のコマンドが含まれる場合に次のようなことが起こり得る。第2のインタプリタがステープル綴じ指定のコマンドを解釈する前に、第1のインタプリタによる1ページ目の処理が完了して1ページ目が印刷されてしまう。そして第2のインタプリタが2ページ目に含まれる綴じ指定のコマンドを解釈して綴じ処理の設定を有効にしたとしても、1ページ目は既に印刷されてしまっているので、全ページに対してステープル綴じ処理を適用することができない。
つまり、複数の解釈手段で印刷データを並列解釈する印刷装置において、ジョブ全体に対する印刷設定コマンドが何ページ目に含まれているのかを考慮しないと、処理がジョブ全体に適用されたり、されなかったりと、動作に再現性がなくなってしまう。
そこで、本発明は、少なくとも上述のような不都合を防ぐ印刷装置を提供することを目的とする。
本発明の印刷装置は、PDLデータを受信する受信手段と、第1および第2のインタプリタと、制御手段とを有する印刷装置であって、前記第1のインタプリタは、前記受信手段で受信したPDLデータの1ページ目を、当該第1のインタプリタによって描画される複数のページにおける最初のページとして解釈および描画し、前記第2のインタプリタは、前記受信手段で受信したPDLデータの2ページ目を、当該第2のインタプリタによって描画される複数のページにおける最初のページとして解釈および描画し、前記第1のインタプリタは、当該第1のインタプリタにとっての前記最初のページの解釈において、全ページに対して特定の処理を適用することを指示する印刷設定コマンドを解釈した場合に、前記特定の処理が前記PDLデータに含まれる全ページに対して適用されるように、当該解釈した印刷設定コマンドを前記制御手段に通知するが、前記第2のインタプリタは、当該第2のインタプリタにとっての前記最初のページの解釈において、全ページに対して特定の処理を適用することを指示する印刷設定コマンドを解釈しても、当該解釈した印刷設定コマンドを前記制御手段に通知しないことを特徴とする。
ページ単位で並列に解釈処理を行う印刷装置において、ジョブ全体に所定の処理を適用するためのコマンドを含む印刷データを適切に扱うことができる。
画像形成装置のハードウェア構成図 画像形成装置のソフトウェア構成図 印刷データの記述例 シングルスレッドによるジョブ属性のPDL指定のシーケンス図 インタプリタの動作モードの説明図 ページ並列制御の基本的なシーケンス図 実施例1のページ並列制御のシーケンス図 実施例1のページ並列制御部のフローチャート 実施例1のPDL言語解釈部およびDL生成部のフローチャート 実施例2のページ並列制御のシーケンス図 実施例2のページ並列制御部のフローチャート 実施例2のPDL言語解釈部およびDL生成部のフローチャート 実施例3のページ並列制御のシーケンス図 実施例3のPDL言語解釈部およびDL生成部のフローチャート
以下、本発明の一つの実施形態について図面を用いて説明する。なお、本実施例ではPDLデータの種類として、PostScript(PS)(登録商標)を例にして説明する。PDLデータは印刷データあるいは印刷ジョブとも呼ばれる。
PSによる記述において指定可能な印刷属性は、各ページ単位で指定されるページ印刷属性(ページ属性)と、ジョブ単位で指定されるジョブ印刷属性(ジョブ属性)がある。
ページ印刷属性の印刷設定コマンド(PDLコマンド)は、ページ属性のPDL指定とも呼ばれ、全ページではなく、所定のページのみに特定の処理を適用するための印刷設定コマンドである。例えば、両面印刷の指定、画像シフトの指定、用紙色の指定などはページ単位で指定できるページ属性のPDL指定である。
またジョブ印刷属性の印刷設定コマンド(PDLコマンド)は、ジョブ属性のPDL指定とも呼ばれ、その印刷ジョブ全体(全ページ)に特定の処理を適用するための印刷設定コマンドである。例えば、パンチ処理やステープル綴じ処理などのフィニッシングの指定、製本印刷や集約印刷などのレイアウトの指定、画像シャープネスや出力解像度、カラーモードなどの描画品質の指定などはジョブ属性のPDL指定である。
なお、PSでは、ページ属性およびジョブ属性のPDL指定は、PDLデータの任意のページの任意の場所にも記述することが許されている。また、そのPDL指定の解釈と、その解釈によってどのような処理を行うのかは、印刷装置が自由に制御可能になっている。
[実施例1]
<画像形成装置のハードウェアブロック図>
図1は本実施例の画像形成装置(印刷装置)の構成を説明するハードウェアブロック図である。図1において、100はコントローラユニットで、画像信号やデバイス情報の入出力を制御する。
中央演算装置101は補助記憶装置103に記憶されたプログラムを主記憶装置102に読み出し、実行する。さらに、システムバス109に接続される各デバイスを中央演算装置101が統括的に制御する。中央演算装置101は並列処理を実現するために、ハードウェアとしてプロセッサを複数有するマルチコアCPUを採用する。また、マイクロプロセッサとして、複数のプロセッサコアを備えているものでもよい。ハイパースレッディングのようなプロセッサ内のレジスタやパイプラインの空き時間を有効利用して1つのプロセッサをあたかも複数のプロセッサであるかのように見せる技術が利用出来るものを用いても良い。
主記憶装置102は、RAMであり、中央演算装置101の主メモリ、ワークメモリとして機能する。
補助記憶装置103は、HDDであり、大容量データを一時的あるいは長期的に保持する目的でも使用される。本発明の実施例においては、ページ単位で並列処理(以下、ページ並列)を実施する際にバッファ領域に中間データ(DisplayList、以下DL)を保存するが、この保存先が主記憶装置102または、補助記憶装置103となる。
NIC(ネットワークインターフェースカード)104はネットワーク105に接続し、画像形成装置外部との印刷データやデバイス情報の入出力を担う。
RIP(ラスターイメージプロセッサ)106は中間データであるDLをラスターイメージに変換する。この変換処理のことをラスタライズあるいはレンダリングと呼び、RIPのことをラスタライザ−とも呼ぶ。RIP106は中央演算装置101により主記憶装置102および補助記憶装置103上に生成されたDLを高速かつ、中央演算装置101の実行と並列に、処理するものである。
デバイスI/F107は中央演算装置101の指示に基づき、ラスターイメージに基づく画像信号の送出、デバイス動作指示、デバイス情報の受信を行う。コントローラユニット100はデバイスI/F107を介して、プリンタエンジン108に接続される。
プリンタエンジン108はコントローラユニット100からの画像信号に基づく画像を印刷媒体(用紙)上に出力(印刷)する出力機であり、電子写真方式、インクジェット方式の何れでも構わない。
また不図示のフィニッシャーは、コントローラユニット100に接続されており、制御信号をコントローラユニット100から受信する。そしてその制御信号にしたがって、フィニッシャーは、プリンタエンジン108からの印刷物に対して、フィニッシング処理(ステープル綴じ処理やパンチ処理)を行う。なおこの制御信号は、後述のジョブ属性のPDL指定が有効にされたか否かに応じて、コントローラユニット100によって出力される。例えば、後述のインタプリタが、全ページにステープル綴じ処理のPDL指定を有効ページの1ページ目(すなわち特定のページ)から解釈した場合に、コントローラユニット100は、ステープル綴じ処理の実行を指示する制御信号をフィニッシャーに送る。なお、有効ページの2ページ目に含まれるステープル綴じ処理のPDL指定がイン他プリタによって解釈されたからと言って、それに起因して、ステープル綴じ処理の実行指示の制御信号をコントローラ100がフィニッシャーに送ることは無い。
<画像形成装置のソフトウェアモジュール図>
図2は本実施例における画像形成装置のソフトウェアモジュール構成図である。図2に記載した各ソフトウェアモジュールは、プログラムとして補助記憶装置103に格納され、主記憶装置102にロードされ中央演算装置101により実行されるものである。なお以下のソフトウェアモジュールを実行する中央演算装置101は、主記憶装置102および補助記憶装置103にデータを一時的に記憶しながら、データを処理する。
ページ並列制御部200は、PSインタプリタ(以下、インタプリタ)201を複数スレッド立ち上げ、スレッド制御する。ページ並列制御部200は、複数のページを並列処理するために、印刷データをページ単位に区切り、各スレッドへ処理対象とするページを割り当てる役割も担う。尚、本実施例ではスレッドを2つ立ち上げたものを想定しているため、インタプリタ201は2つ存在しているが、中央演算装置101のプロセッサコアが並列制御できる数だけスレッドを立ち上げ、インタプリタ201を割り当ててもよい。
インタプリタ201はPDL言語解釈部202と、DL生成部203からなり、印刷データを解釈して、中間データとしてDLを生成する。PDL言語解釈部202は、ページ記述言語により記述されている印刷データの内容を解釈するデータ解釈部である。DL生成部203は、PDL言語解釈部202により解釈された内容から、中間データ(DL)を生成する。
バッファ204は、複数のインタプリタ201によって生成されるDLをバッファリングする。ページ並列技術を採用すると、各スレッドが処理を完了する順番はページ順にはならず、ページ順において先のページ(例えば1ページ目)より後のページ(例えば2ページ目)の処理が先に完了する場合がある。しかし、印刷データはページ順に出力(印刷)する必要があるため、未処理のページが完了するまでのバッファリング領域として、このバッファ204を使用する。バッファ領域は主記憶装置102の一部を確保して使用するが、バッファリングできるほどの領域がない場合は、補助記憶装置103の一部を代替として用いても良い。
レンダリング部205は、バッファ204に格納されたDLを図1のRIP106に送る。RIP106は、受け取ったDLを、ラスタライズする。
<印刷データの記述例>
図3は印刷データに記述される描画オブジェクトと印刷属性の記述例を示している。図3はPSコマンド(オペレーター)を用いた印刷データの記述例の一例である。Page1の部分では、ステープル指定、用紙サイズ指定、画像シャープネス(HIGH)指定を印刷属性としてPDL指定し、「Page:1」の文字列を定義している。Page2では、画像シャープネス(LOW)指定を印刷属性としてPDL指定し、「Page:2」という文字列を定義している。Page3では、画像シャープネス(HIGH)指定を印刷属性としてPDL指定し、「Page:3」という文字列を定義している。Page4では、画像シャープネス(HIGH)指定を印刷属性としてPDL指定し、「Page:4」という文字列を定義している。ページの区切れ目には「showpage」オペレーターが用いられる。
<ジョブ属性のPDL指定制御>
図3の記述例で記述されている、ステープル、用紙サイズ、画像シャープネスに関する印刷属性は、本画像形成装置においては、ジョブ属性のPDL指定である。このジョブ属性のPDL指定は、PDLデータのどこに何度でも記述してよい仕様となっており、画像シャープネス指定は各ページに指定されている。印刷属性のPDL指定をジョブ属性とするか、ページ属性とするかは画像形成装置の構成に依存している。描画品質指定(本実施例では画像シャープネス指定)をページ単位切り替えるハード機構を持つ画像形成装置であれば、描画品質指定をページ属性として適用することができる。しかし、そのような画像ハード構成を持たない構成の画像形成装置の場合、描画品質指定はジョブ属性として扱う必要があり、そのPDL指定は1ページ目に記述されているものまでを有効とする。
図4はそのようなページ単位で描画品質指定を切り替えることができる機構を持たない画像形成装置における、シングルスレッドによるジョブ属性のPDL指定の制御のシーケンス図である。インタプリタ201は画像形成処理が開始されると、データの先頭から言語解釈処理を実行していく。1ページ目の言語解釈処理中に検知したジョブ属性のPDL指定は「最初のページ」で検知したジョブ単位のPDL指定であるため、全て制御部へ通知する。1ページ目の言語解釈処理が終了すると、続いて2ページ目以降も言語解釈処理を実行していくが、ジョブ属性のPDL指定を検知しても「最初のページ」で検知したジョブ単位のPDL指定では無いため、無効として制御部に通知しない。
これにより、1ページ目にPDL指定されたジョブ属性の印刷属性が全ページへ適用される。
<ページ並列処理>
本実施例は、印刷データのページ記述言語としてページ非独立(ページ依存)な記述が可能なPDL(具体的にはPostScript)を採用した時のページ並列処理を対象としている。例えばPostScriptは、別ページにも影響のある設定情報を、その別ページよりも前のページに記述できる。その為、PostScriptの印刷処理に対してページ並列技術を採用する場合、マルチスレッド処理する各スレッドのPDL言語解釈部202は、データの先頭ページからページ順に印刷データを言語解釈していく必要がある。
そのため本実施例では、図5に示す通り、インタプリタ201は2つの動作モードで処理を進める。1つ目はページスキップ処理であり、このときインタプリタ201はPDL言語解釈部202を用いた言語解釈処理を行うが、DL生成部203を用いたDL生成を行わない。もう一つはページ描画処理であり、このときインタプリタ201はPDL言語解釈部202を用いた言語解釈処理と、DL生成部203を用いたDL生成の両方を行う。ページスキップ処理は、DL生成処理を行わない分、処理を早く進めることができる。またページスキップ処理では、言語解釈処理を行っているので、DL生成の対象とするページ(生成ページと呼ぶ)の直前のページまでページスキップ処理を行っても、直前のページまでの設定情報を取得できる。そして、生成ページはページ描画処理で処理をすることで、直前のページまでに取得された設定情報および生成ページで取得された設定情報を反映したDL生成を実行できる。言い換えれば、ページスキップ処理もページ描画処理も印刷データの先頭ページから各ページの言語解釈処理を行うため、生成ページに必要な情報が不足することはなく、正常に印刷処理をすることができる。
図6は、本実施例のページ並列処理の基本的なシーケンス図を示している。スレッドAとして立ち上がっているページ並列制御部200により、スレッドB1、スレッドB2が立ち上げられ、各スレッドにインタプリタ201が割り当てられる。処理が開始されると、インタプリタ201はページ並列制御部200へ生成ページのページ番号を問い合わせる。
ページ並列制御部200は、各スレッドの並列性を考慮して、それぞれのスレッドへ割り当てる生成ページのページ番号を通知する。図6の例では、スレッドB1にまず2ページ目を、スレッドB2に1ページ目を処理するように指示している。ページ並列制御部200から生成ページが通知されると、インタプリタ201は生成ページまではページスキップ処理、生成ページはページ描画処理を行う。
スレッドB2は1ページ目が生成ページであるため、最初からページ描画処理を行う。スレッドB1は2ページ目が生成ページであるため、1ページ目はページスキップ処理、2ページ目はページ描画処理を行う。スレッドB2は1ページ目のページ描画処理が終わると、ページ並列制御部200へDL生成完了を通知した後、次の生成ページのページ番号を問い合わせる。ページ並列制御部200は、図6の例では、このタイミングではまだ3ページ目の処理が指示できていないため、次の生成ページとして3ページ目をスレッドB2へ通知する。以下、同様にインタプリタ201はスレッドB1、B2のそれぞれにおいて、ページ並列制御部200へ生成ページの問い合わせ、言語解釈処理、生成ページのDL生成を繰り返す。
これにより、ページスキップ処理、ページ描画処理を切り替えながら最終ページになるまで処理を継続し、ページ並列処理を実現する。
図7は、実施例1における、マルチスレッドによるページ並列処理とジョブ属性のPDL指定の制御のシーケンス図である。ページ並列制御部200は、各スレッドに割り当てるページ番号を管理、制御するページカウンタ値(OutputPage)をスレッド毎に保持している。図7の例では、スレッドB1にまず2ページ目を、スレッドB2に1ページ目を処理するように指示しているが、各スレッドのページカウンタ値OutputPageB1に「2」、OutputPageB2に「1」を格納する。ページ並列制御部200から生成ページが通知されると、インタプリタ201は生成ページまではページスキップ処理、生成ページはページ描画処理を行う。
各スレッドは指示されたページのページ描画処理が終わると、ページ並列制御部200へDL生成完了を通知した後、次の生成ページのページ番号を問い合わせる。ページ並列制御部200は、問い合わせのタイミングに応じて、次に処理すべき適切なページ番号を各スレッドへ通知し、各スレッドのページカウンタ値に指示したページ番号を格納していく。
ここで、スレッドB2は生成ページのページ番号として「1」が指示されており、1ページ目に対してページ描画処理を行う。このスレッドB2は、このページ描画処理時にジョブ属性のPDL指定を検知したとする。スレッドB2のインタプリタ201にとって、この1ページ目に対するページ描画処理は「初めて行うページ描画処理」であるので、スレッドB2は、検知したPDL指定の内容を、ページ並列制御部200へ通知する。この時、ページ並列制御部200は、各スレッドのページカウンタ値を参照し、ジョブ属性のPDL指定の通知が、どのページ番号のページについてページ描画処理を行っているスレッドからの通知かを判定する。このとき、通知しているスレッドがページ番号「1」のページのページ描画処理を行っているスレッドである場合は、ページ並列制御部200は、通知されたジョブ属性のPDL指定を有効なものとして扱う。すなわち、この通知されたジョブ属性のPDL指定に基づいて、ジョブの印刷属性が決定される。たとえば、全てのページに対してステープル処理が行われる。
一方、スレッドB1は生成ページのページ番号として「2」が指示されており、1ページ目に対してページスキップ処理を行った後、2ページ目に対してページ描画処理を行う。このスレッドB1は、この2ページ目のページ描画処理時にジョブ属性のPDL指定を検知したとする。スレッドB1のインタプリタ201にとって、この2ページ目に対するページ描画処理は、「初めて行うページ描画処理」であるので、スレッドB1は、検知したPDL指定の内容を、ページ並列制御200へ通知してしまう。この時も、ページ並列制御部200は各スレッドのページカウンタ値を参照し、ジョブ属性のPDL指定の通知が、どのページ番号のページについてページ描画処理を行っているスレッドからの通知かを判定する。このときは、通知しているスレッドがページ番号「2」のページのページ描画処理を行っているスレッドであるため、ページ並列制御部200は、通知されたジョブ属性のPDL指定を無効なものとして扱う。すなわち、2ページ目に画像シャープネスのジョブ属性のPDL指定があったとしても、このPDL指定はジョブ全体に反映されないので、1ページ目と2ページ目との画質が変わることを防げる。
以上のように、ページ単位の並列処理であっても、ページ並列制御部200内で保持しているページカウンタ値を参照し、各スレッドから通知されるジョブ属性のPDL指定の有効、無効を切り替えることにより、PDL指定の印刷属性を適切に扱える。本実施例では、マルチスレッドでページ並列処理を行う場合でも、複数ページのうちの1ページ目に記述されているジョブ属性のPDL指定だけを適切に有効にできる。
<ページ並列制御部の制御フロー>
次に図8を用いて、ページ並列制御部200における、ページ並列処理のページ制御について説明する。ページ並列制御部200では、ページ制御のための内部ページカウンタ値としてOutputPageとTotalPageを持っている。OutputPageは生成するインタプリタのスレッドの数だけ存在し、各スレッドがどのページ番号を処理しているかを管理するためのページカウンタ値である。TotalPageは現在どのページ番号までインタプリタへ指示がなされているかを管理するページカウンタ値であり、この値を用いて各スレッドへ生成ページのページ番号を通知する。印刷データがNIC104によって受信されると、中央演算処理装置101が補助記憶装置103に記憶されているプログラムを実行し、ページ並列制御部200の実行スレッドAを立ち上げることにより、本処理が開始される。なおNIC104によって受信された印刷データは、補助記憶装置103に格納される。
まず、S1000において、ページ並列制御部200は、印刷データを補助記憶装置103から取得する(読み出す)。
次に、S1001において、ページ並列制御部200は、後ほど説明する図9に示されるスレッドB1、B2を立ち上げ、インタプリタ201を割り当てる。すなわち、ページ並列制御部200は、インタプリタ201の実行スレッドB1、B2を起動する。
次にS1002において、ページ並列制御部200は、初期化処理としてTotalPageに0を設定する。
次にS1003において、ページ並列制御部200は、初期化処理としてOutputPageをS1001で立ち上げたインタプリタスレッドの数だけ生成し、それぞれに0を設定する。
次にS1004において、ページ並列制御部200は、S1001にて立ち上げたインタプリタ201からの通信を待つ。ここでは、インタプリタ201からの生成ページの問い合わせか、ジョブ属性のPDL指定か、DL生成完了通知のどれかの通信を待っている。このどれかの通信をインタプリタ201のスレッドから受信すると、S1005へ処理を進める。
次にS1005において、ページ並列制御部200は、S1004においてインタプリタ201から受信した通信が、生成ページの問い合わせだったかどうか判定する。生成ページの問い合わせだった場合は、S1006へ処理を進める。生成ページの問い合わせではなかった場合は、S1009へ処理を進める。
次にS1006において、ページ並列制御部200は、TotalPageに1を加算することで、インタプリタ201に通知する生成ページのページ番号を1ページ分進める。
次にS1007において、ページ並列制御部200は、問い合わせ元のインタプリタがどのスレッドで実行されているのかを判定し、そのスレッドに該当するOutputPageのカウンタ値にTotalPageの値を代入する。
次にS1008において、ページ並列制御部200は、問合せ元のインタプリタ201のスレッドへ、TotalPage(該当するOutputPage)の値を通知する。例えばスレッドB1からの問合せであれば、ページ並列制御部200は、スレッドB1のOutputPageの値を、スレッドB1に通知する。その後、S1004へ処理を戻し、ページ並列制御部200は、再度インタプリタ201からの通知を待つ。
次にS1009において、ページ並列制御部200は、S1004においてインタプリタ201から受信した通信が、ジョブ属性のPDL指定の通知であったか判定し、そのスレッドに該当するOutputPageの値が「1」であるか判定する。つまり、印刷データの1ページ目に含まれるジョブ属性のPDL指定が通知されたかをページ並列制御部200は判定している。OutputPageの値が「1」であるジョブ属性のPDL指定の通知である場合はS1010へ進む。そうではない場合はS1011へ進む。
次にS1010において、ページ並列制御部200は、S1009において通知されたジョブ属性のPDL指定を有効として設定する。つまり、ページ並列制御部200は、通知されたジョブ属性のPDL指定が、印刷データの1ページ目に含まれるものであれば、通知されたPDL指定をジョブ全体に適用する印刷属性として有効にする。
次にS1011において、ページ並列制御部200は、S1004においてインタプリタ201から受信した通信が、DL生成完了通知だったかどうか判定する。DL生成完了通知だった場合は、S1012へ処理をすすめる。DL生成完了通知でなかった場合、インタプリタ201からの通知は他の通知であったとしてS1004へ戻り、処理を繰り返す。
次にS1012において、ページ並列制御部200は、バッファ204によって管理されるバッファ領域へ、インタプリタ201によって生成されたDLをスプールする。
次に、S1013において、ページ並列制御部200は、S1004においてインタプリタ201から受信したDL生成完了通知のページ番号までの全DL生成が完了しているか、判定する。例えばインタプリタ201によって生成されたDLがNページ目のものである場合に、ページ並列制御部200は、Nページ目よりも前のページまでのDL(つまりN−1ページ目のDL)の生成が完了しているかを判定する。全DL生成が完了している場合は、S1014へ処理を進める。全DL生成が完了していない場合は、S1004へ戻り、処理を繰り返す。
次にS1014において、ページ並列制御部200は、バッファ204に、バッファ領域にスプールされている全DLを、ページ順に従ってレンダリング部205へ転送させる。バッファ204は、転送したDLをバッファ領域から削除して空き領域をつくる。
次にS1015において、ページ並列制御部200は、印刷データに含まれる全ページ分のDLを転送したか判定する。この判定には、S1001で立ち上げたスレッドB1、B2が停止しているか、で判定することが可能である。印刷データに含まれる全ページ分のDLを転送した場合は、S1016へ進む。印刷データに含まれる全ページ分のDLを転送できていない場合は、S1004へ戻り、処理を繰り返す。
次にS1016において、ページ並列制御部200は、自身のスレッドAを停止し、本処理を終了する。
以上の処理により、ページ並列制御部200による、ページ並列処理のページ制御が実施される。特にS1009、S1010の処理によって、マルチスレッドによる複数のインタプリタでページ単位の並列処理を行う場合でも、印刷データに含まれる1ページ目のジョブ属性のPDL指定だけを適切に有効にすることができる。
<インタプリタの並列DL生成制御のフロー>
次に図9のフローチャートを用いて、インタプリタ201のスレッドB1、B2における並列DL生成制御のフローについて説明する。
図5のS1002にて、ページ並列制御部200からスレッドB1、B2が立ち上げられ、各スレッドへインタプリタ201の実行が割り当てられると、本処理が開始される。
まずS1100において、インタプリタ201は、ページ並列制御部200のS1004へ生成ページのページ番号を問い合わせる。ページ並列制御部200から、生成ページのページ番号が通知されると、S1101へ処理を進める。
次にS1101において、インタプリタ201は、PDL言語解釈部202により、印刷データの言語解釈を、印刷属性のPDL指定か、ページ区切りコマンドか、印刷データのEOF(End Of File)かを検知するまで実行する。解釈された結果(解釈済みのデータ)は、インタプリタ201によってDL生成のために保持される。
次にS1102において、インタプリタ201は、言語解釈した結果、印刷データのEOFを検知したか判定する。検知していない場合はS1103へ処理を進める。検知した場合は処理終了する。
次にS1103において、インタプリタ201は、言語解釈した結果、検知した印刷属性のPDL指定が、ページ属性のものか、ジョブ属性のものかを判定する。ジョブ属性のものである場合はS1104へ処理を進める。ページ属性のものである場合は、インタプリタ201は、そのページ属性のPDL指定に基づく印刷設定を行って、S1106へ処理を進める。すなわち、ページ属性のPDL指定は、後述するようにジョブ属性のPDL指定とは異なり、何ページ目に含まれていても、インタプリタ201に解釈されることによって、その設定による特定の処理が該当ページに適用できる。
次にS1104において、インタプリタ201は、現在処理しているページが、このインタプリタ201にとって「初めてページ描画処理を行うページ」であるかを判定する。現在処理しているページが、このインタプリタ201にとって「初めてページ描画処理を行うページ」である場合はS1105へ処理を進める。そうでない場合はS1106へ処理を進める。そしてS1105において、インタプリタ201は、検知したジョブ属性のPDL指定をページ並列制御部200へ通知する。このようにS1104、S1105の処理フローによって、各インタプリタ201は、自身が「初めてページ描画処理を行うページ」に含まれるジョブ属性のPDL指定をページ並列制御部200に通知することになる。そのため、印刷データの1ページ以外のページに含まれるジョブ属性のPDL指定が通知されてしまう可能性がある。しかし、図8のS1009、S1010において、ページ並列制御部200側で通知されるジョブ属性のPDL指定を有効とするか無効とするかを決定しているので、1ページ目以外のページに含まれるジョブ属性のPDL指定が有効となることは無い。
次にS1106において、インタプリタ201は、言語解釈した結果、生成ページのページ区切りコマンドを検知したか判定する。ページ区切りコマンドとは、PSオペレーターでは「showpage」や「erasepage」、「copypage」などのオペレーターが該当する。ページ区切りコマンドを検知した場合、論理ページの1ページ分の言語解釈処理が完了したことを意味する。しかし、生成ページよりも前のページについてはページスキップ処理を行うため、生成ページよりも前のページのページ区切りコマンドを検知した場合には、処理をS1101に戻す。そうではなく、生成ページのページ区切りコマンドを検知した場合には、インタプリタ201は、S1107へ処理を進める。
次にS1107において、インタプリタ201は、DL生成部203により、S1101において保持しておいた解釈済みのデータから、生成ページのDLを生成する。
次にS1108において、インタプリタ201は、ページ並列制御部200のS1004へ生成ページのDL生成が完了したことを通知する。
以上の処理により、インタプリタ201による、スレッドB1、B2における並列DL生成制御が実施される。
以上、これまで説明したように、本実施例におけるマルチコアCPUを採用した中央演算処理装置101を備える画像形成装置は、ページ並列制御部200が各スレッドに指示しているページ番号を管理するページカウンタ値を保持する。そのページカウンタ値参照して、各スレッドに割り当てられたインタプリタ201から通知されるジョブ属性のPDL指定の有効、無効を判定する。ページ並列制御部はページカウンタ値「1」を割り当てたスレッドからのジョブ属性のPDL指定のみを有効とする。これにより、ページ単位で並列処理することで生じうるジョブ属性のPDL指定の通知の不都合を防ぐことが可能となる。
[実施例2]
実施例1では、ページ並列制御部200が、各スレッドに通知している生成ページのページ番号を保持するページカウンタ値(OutputPage)を持つ。そしてページ並列制御部200は、その値に基づいてインタプリタ201から通知される、ジョブ属性のPDL指定の有効、無効を切り替えていた。実施例2では、インタプリタ201側で、ページ並列制御部200から通知された生成ページのページ番号をページカウンタ値(後述のTargetPage)で管理する。そしてインタプリタ201は、その値を用いて、ジョブ属性のPDL指定をジョブ並列制御部200に通知するか否かを決める。
<ページ並列処理>
図10は実施例2における、マルチスレッドによるページ並列制御のシーケンス図である。実施例2においては、インタプリタ201は上述のページカウンタ値(TargetPage)をスレッド毎に保持している。図7の例と同様、ページ並列制御部200は、インタプリタ201のスレッドB1に2ページ目を、スレッドB2に1ページ目を、生成ページとして通知する。すると各インタプリタのスレッドB1、B2は、自身のページカウンタ値(TargetPage)に、通知された生成ページのページ番号「2」、「1」を格納する。
各スレッドB1、B2は生成ページのページ描画処理が終わると、ページ並列制御部200へDL生成完了を通知した後、次の生成ページのページ番号を問い合わせる。インタプリタ201は、その問合せの応答として通知されたページ番号で各スレッドのページカウンタ値(TargetPage)を更新する。
スレッドB2はページ番号「1」が通知されており、1ページ目のページ描画処理時にジョブ属性のPDL指定を検知したとする。その際に、現在の生成ページのページ番号が何なのか、ページカウンタ値(TargetPage)を参照して、ページ並列制御部200に、1ページ目の言語解釈によって検知したPDL指定を通知するか判定する。ページカウンタ値が「1」である場合、ページ並列制御部200に、検知したPDL指定を通知する。そうでない場合は通知しない。図10の例では、このタイミングではスレッドB2のページカウンタ値には「1」が格納されているため、ページ並列制御部200へ、検知したPDL指定を通知する。
一方、スレッドB1はページ番号「2」が生成ページとして通知されており、1ページ目をページスキップ処理した後、2ページ目をページ描画処理する。スレッドB1は、この2ページ目のページ描画処理時にジョブ属性のPDL指定を検知するとする。この際、スレッドB1のページカウンタ値には「2」が格納されているため、検知したPDL指定をページ並列制御部200に通知しない。
以上のように、ページ単位の並列処理時に、各インタプリタ201は、自身が保持しているページカウンタ値を参照し、各スレッドで検知したジョブ属性のPDL指定を通知するか否かを切り替える。これにより、PDL指定の印刷属性の正しい制御を実現する。
<ページ並列制御部の制御フロー>
次に図11を用いて、実施例2についてページ並列制御部200における、ページ並列処理のページ制御について説明する。処理フローとしてはほぼ実施例1と同様であるが、ページ並列制御部200は、実施例1と異なり、ページ制御のための内部ページカウンタ値OutputPageを保持していない。また、インタプリタ201からジョブ属性のPDL指定の通知が来た場合、ページ番号を意識することなく、ジョブ属性の印刷属性として設定する。これは、インタプリタ側で有効なジョブ属性のPDL指定かどうかを判定して、無効なものは通知しないように制御しているため、ページ並列制御部200では意識する必要がないためである。以下、図11の説明については、実施例1の図8のページ並列制御部200の処理フローの説明と重複するステップが多いので、適宜、図8の処理フローを参照する。
図11の処理フローは、印刷データがNIC104によって受信されると、中央演算処理装置101が補助記憶装置103に記憶されているプログラムを実行し、ページ並列制御部200の実行スレッドAを立ち上げることにより、本処理が開始される。なおNIC104によって受信された印刷データは、補助記憶装置103に格納される。
S2000〜S2002、S2003〜S2005の処理は、図8のS1000〜S1002、S1004〜S1006と同様の処理である。
S2007において、ページ並列制御部200は、S2003においてインタプリタ201から受信した通信が、ジョブ属性のPDL通知であったか判定する。ジョブ属性のPDL指定通知である場合はS2008へ、そうではない場合はS2009へ進む。
S2008〜S2014の処理は、図8のS1010〜S1016と同様の処理である。
以上の処理により、実施例2についてページ並列制御部200による、ページ並列処理のページ制御が実施される。
<インタプリタの並列DL生成制御のフロー>
次に図12のフローチャートを用いて、実施例2のインタプリタ201のスレッドB1、B2における並列DL生成制御のフローについて説明する。実施例2において、各インタプリタ201は内部ページカウンタとして、TargetPageのカウンタ値を持っている。TargetPageは現在の生成ページのページ番号を示すページカウンタ値である。インタプリタ201はページ並列制御部200から生成ページのページ番号を受け取ると、TargetPageに値を格納して、処理を開始する。TargetPageの言語解釈処理時にジョブ属性のPDL指定を検知した場合、TargetPageに格納されている値が「1」である場合の時のみ、ページ並列制御部200へ通知する。図12の説明においても、図9のインタプリタ201の並列DL生成制御のフローと重複するステップが多数あるため、異なるステップに限定して説明する。図11のS2001にて、ページ並列制御部200からインタプリタ201のスレッドB1、B2が立ち上げられると、本処理が開始される。
まずS2100において、インタプリタ201は、初期化処理として、内部ページカウンタ値のTargetPageを0に設定する。
S2102において、インタプリタ201は、S2101にてページ並列制御部200から通知された生成ページのページ番号を内部ページカウンタ値のTargetPageに格納する。
S2103、S2104の処理は、図9のS1101、S1102と同様の処理である。
S2105において、インタプリタ201は、TargetPageで示されるページに含まれるジョブ属性のPDL指定を検知したか判定する。TargetPageで示されるページに含まれるジョブ属性のPDL指定を検知した場合はS2106へ進む。そうでない場合はS2108へ処理を進める。
次にS2106において、インタプリタ201は、TargetPageに格納されている値が「1」であるか判定する。つまりインタプリタ201は、検知されたPDL指定が印刷データの1ページ目に含まれるものであるかを判定する。「1」である場合はS2107へ進む。「1」でない場合はS2108へ処理を進める。
S2107の処理は、図9のS1105と同様の処理である。
次にS2108において、インタプリタ201は、TargetPageで示されるページの言語解釈処理が完了したか判定する。完了した場合はS2109へ処理を進める。完了していない場合はS2103へ戻り、処理を繰り返す。
S2109の処理は、図9のS1107と同様の処理である。
次にS2110において、インタプリタ201は、ページ並列制御部200によって行われる処理S2003へ、TargetPageで示されるページのDL生成が完了したことを通知する。
以上の処理により、インタプリタ201による、スレッドB1、B2における並列DL生成制御が実施される。
以上、これまで説明したように、本実施例におけるマルチコアシステムを採用した中央演算処理装置101を備える画像形成装置は、インタプリタ201側で現在の生成ページのページ番号をページカウンタ値で管理する。そして、その値を用いて、ページ制御部200へのPDL指定の通知を制御することにより、ページ単位で並列処理することで生じうるジョブ属性のPDL指定の通知の不都合を防ぐことを可能とする。
[実施例3]
PDL指定の中には、ページ内に記述された描画内容をクリアし、そのページを出力(印刷)しないようにするPDLコマンド(無効ページコマンド)が存在する。このようなコマンドにしたがって、出力(印刷)が行われないページのことを無効ページと呼ぶ。一方、無効ページ以外の出力(印刷)されるページのことを有効ページと呼ぶ。本実施例では、1ページ目が無効ページであった場合に、次の有効ページに記載されているジョブ属性のPDL指定による印刷設定を有効にする。つまり、本実施例では、PDLデータに含まれる有効ページのうちで最初のページに含まれるジョブ属性のPDL指定のみを有効とする。なお、実施例1、2では、1ページ目が無効ページであることを想定していなかったため、単に1ページに含まれるジョブ属性のPDL指定のみを有効としていた。しかし、重要なのは、印刷装置が、PDLデータに含まれる最初の有効ページ(つまり有効ページの1ページ目)にジョブ属性のPDL指定が含まれているか否かを判定することである。そして、有効ページのうちの最初のページにジョブ属性のPDL指定が含まれている場合に限って、印刷装置は、そのPDL指定による設定を有効にするのが本明細書を通しての主題であることが理解される。
このようなコマンドを無効ページオペレーターとも呼ぶ。PostScriptを例にとると、「erasepage」オペレーターや0が指定された「NumCopies」オペレーターが無効ページオペレーターである。このようなページ記述を無効とするPDL指定が含まれている場合、この無効となるページ番号を考慮したジョブ属性のPDL指定の取り扱いをする必要がある。実施例3では、このような特異な印刷データのときでも正常にジョブ属性のPDL指定を取り扱い可能な実施例を説明する。
無効ページを意味するPDL指定のNumCopiesの値が0となるPSコマンドはページ中のどこにでも記述することができる。一方、erasepageはページ区切りコマンド(PostScriptでいうとshowpage、copypage、erasepage)としてページ区切りの最後に記述される。そのため、無効ページを検知するよりも前にジョブ属性のPDL指定を検知した場合、そのページが無効ページとなるかはページの最後、区切りコマンドを検知するまでは検定することができない。そこで、本実施例のインタプリタ201は、ジョブ属性のPDL指定を検知しても、即座にページ並列制御部200に通知せず、一時的に保持して、ページ区切りコマンドを検知した時点で無効ページであるかを判定し、通知するかどうかを切り替える。
具体的には、実施例2の構成を元として、インタプリタ201内にTargetPageに加えて、無効ページの累計ページ数を管理するページカウンタ値(NonPage)を保持させる。インタプリタ201がTargetPageの言語解釈処理中にジョブ属性のPDL指定を検知した場合、そのPDL指定を一時保持する。また、無効ページを意味するPDLコマンドを検知した場合、NonPageのページカウンタ値をインクリメントする。そして、TargetPageの言語解釈処理が全て終わったタイミングで、TargetPageとNonPageとの差を算出し、その値が「1」である場合にページ並列制御部200へジョブ属性のPDL指定を通知する。
ページ並列制御部200の処理フローは実施例2で説明した図11の処理フローと同一であるため、ここでは説明を省略する。
<ページ並列処理>
図13は実施例3における、マルチスレッドによるページ並列制御のシーケンス図である。実施例3においては、インタプリタ201は現在の生成ページのページ番号を管理、制御するページカウンタ値(TargetPage)に加えて、無効ページを管理するページカウンタ値(NonPage)をスレッド毎に保持している。図7、図10の例と同様、インタプリタ201のスレッドB1、B2のそれぞれは、2ページ目、1ページ目を生成ページとしてページ並列制御部200から通知される。そして各スレッドB1、B2は、それぞれのページカウンタ値TargetPageに「2」、「1」を格納する。各スレッドは指示されたページのページ描画処理が終わると、ページ並列制御部200へDL生成完了を通知した後、次の生成ページのページ番号を問い合わせる。インタプリタ201は、指示されたページ番号を各スレッドのページカウンタ値に格納していく。
スレッドB2はページ番号「1」を指示されており、1ページ目のページ描画処理時にジョブ属性のPDL指定を検知する。スレッドB2は、検知したPDL指定を一時的な記憶領域に保持しておく。また、無効ページを意味するコマンドを検知した場合、スレッドB2は、NonPageの値をインクリメントする。スレッドB2は、TargetPageのページ区切りコマンドを検知すると、TargetPageとNonPageの値の差を算出し、その算出された差の値に基づいて、保持しておいたPDL指定をページ並列制御部200に通知するか否かを判定する。差の値が「1」である場合、スレッドB2は、保持しておいたPDL指定をページ並列制御部200に通知する。そうでない場合は通知しない。図13の例では、1ページ目のページ区切りコマンドを検知したとき、スレッドB2のページカウンタ値TargetPageには「3」が格納されており、かつ無効ページを1ページ分、検知しているためNonPageは「1」が格納されている。その差は「2」(=TargetPage−NonPage)となるため、スレッドB2は、1ページ目で検知したジョブ属性のPDL指定をページ並列制御部200へは通知しない。すなわち、無効ページのコマンドを検知した場合に、インタプリタ201は、そのコマンドが検知されたページが1ページ目であっても、ページ並列制御部200へ通知しない。その結果、無効ページのコマンドを含むページのジョブ属性のPDL指定は有効化されない。
一方、スレッドB1はページ番号「2」を指示されており、スレッドB1は、1ページ目をページスキップ処理した際、言語解釈して無効ページを検知し、NonPageに「1」を格納する。そしてスレッドB1は、TargetPageで示される生成ページである2ページ目のページ描画処理を行う。スレッドB1は、この2ページ目のページ描画処理時にジョブ属性のPDL指定を検知したとする。そしてスレッドB1は、2ページ目のページ区切りコマンドを検知すると、TargetPageの値「2」と、NonPageの値「1」との差は「1」となる。よって、スレッドB1は、この2ページ目で検知したジョブ属性のPDL指定を、ページ並列制御部200へ通知する。すなわち、インタプリタ201は、無効ページのコマンドを含まないページのうちで最もページ番号が若いページに含まれるジョブ属性のPDL指定を、ページ並列制御部200へ通知する。その結果、無効ページのコマンドを含まないページのうちで最もページ番号が若いページに含まれるジョブ属性のPDL指定が有効化される。
以上のように、ページ単位の並列処理時であっても、インタプリタ201内で保持している2種類のページカウンタ値を参照し、その差から各スレッドで検知するジョブ属性のPDL指定の通知の有無を切り替える。これにより、PDL指定の印刷属性の正しい制御を実現する。
<インタプリタの並列DL生成制御のフロー>
次に図14のフローチャートを用いて、実施例3のインタプリタ201のスレッドB1、B2における並列DL生成制御のフローについて説明する。実施例3において、各インタプリタ201は内部ページカウンタとして、TargetPageとNonPageのカウンタ値を持っている。TargetPageは現在の生成ページのページ番号を示すページカウンタ値である。NonPageは無効ページを意味するPDL指定(無効ページオペレーター)が検知されたページ数をカウントするカウンタ値である。インタプリタ201はページ並列制御部200から生成ページのページ番号を受け取ると、TargetPageに値を格納して、処理を開始する。1つのページにおいて1つ以上の無効ページを検知するとNonPageの値を1だけインクリメントする。ジョブ属性のPDL指定を検知した場合、一時的にPDL指定内容を保持する。ページ区切りコマンドを検知、つまりTargetPageの言語解釈処理が完了した時点で、TargetPageとNonPageとの差を算出する。その値が「1」である場合の時のみ、ページ並列制御部200へジョブ属性のPDL指定を通知する。図14の説明においては、図9、および図12のインタプリタ201の並列DL生成制御のフローと重複するステップが多数あるので、適宜、図9および図12の説明を参照する。なおページ並列制御部200の処理フローは実施例2の図11の処理フローと同じである。
S3100の処理は、図11のS2100と同様の処理である。
S3101において、インタプリタ201は、初期化処理として、内部ページカウンタ値のNonPageを0に設定する。NonPageを0に設定することは、後述のS3112でページ並列制御部200に通知されるジョブ属性のPDL指定が含まれるページとして、1ページ目を設定することと同義である。すなわち、インタプリタ201は、ジョブ属性のPDL指定が通知されるべき特定のページとして、1ページ目を設定する役割を果たす。
S3102〜S3105の処理は、図11のS2101〜2104と同等の処理である。
S3106において、インタプリタ201は、言語解釈によって、無効ページオペレーターを検知したかどうか判定する。検知した場合はS31071へ処理を進める。検知していない場合はS3108へ処理を進める。なお、言語解釈処理がなされている現在のページにおいて既に無効ページオペレーターが検知され、S31071の処理が行われていれば、インタプリタ201は、処理をS3108に進める。
S31071において、インタプリタ201は、自身のNonPageの値を1だけインクリメントする。NonPageを1だけインクリメントすることは、後述のS3112でページ並列制御部200に通知されるジョブ属性のPDL指定が含まれるページとして、次のページを設定することと同義である。すなわち、インタプリタ201は、ジョブ属性のPDL指定が通知されるべき特定のページとして、最初の有効ページを設定する役割を果たす。
続いてS31072において、インタプリタ201は、言語解釈処理を行っている現在のページがTargetPageで示されるページであるかを判定する。現在のページがTargetPageで示されるページであると判定されれば、処理はS3102に進み、インタプリタ201はページ並列制御部200に対して生成ページの問合せを行う。この問合せが行われると、ページ並列制御部200は、その応答として、生成ページの新しいページ番号をインタプリタ201に通知することになる。その結果、インタプリタ201は、無効ページオペレーターを含むページのページ描画処理を行わない。一方、現在のページがTargetPageで示されるページでないと判定されれば、処理はS3104に進み、TargetPageの更新を行わずに言語解釈処理が続行される。その結果、ページ並列制御部200から通知された生成ページよりも前のページに無効ページオペレーターが含まれていたとしても、インタプリタ201は、通知された生成ページのページ描画処理を適切に行うことができる。
S3108の処理は、図12のS2105と同様の処理である。
S3109において、インタプリタ201は、検知されたジョブ属性のPDL指定を一時的に保持しておく。
S3110の処理は、図12のS2108と同様の処理である。
S3111において、インタプリタ201は、自身のTargetPageに格納されている値と自身のNonPageに格納されている値の差が「1」であるか判定する。「1」である場合はS3112へ進む。「1」でない場合はS3114へ処理を進める。すなわち、ここでインタプリタ201は、TargetPageで示されるページ番号のページが、無効ページを除くと、1ページ目(最初のページ)であるかを判定している。言い換えると、TargetPageで示されるページ番号のページよりも前のページは全て無効ページであったかが、このS3111で判定されている。
S3112において、インタプリタ201は、S3109において保持しておいたジョブ属性のPDL指定をページ並列制御部200に通知する。
S3113、S3114の処理は、図11のS2109、S2110と同様の処理である。
以上の処理により、インタプリタ201による、スレッドB1、B2における並列DL生成制御が実施される。
以上、これまで説明したように、本実施例におけるマルチコアシステムを採用した中央演算処理装置101を備える画像形成装置は、インタプリタ201側で現在の生成ページのページ番号をページカウンタ値で管理する。加えて無効ページを意味するPDL指定の検知をカウントするカウンタ値も保持する。2つのカウンタ値の差を用いて、ページ制御部200へのPDL指定の通知を制御することにより、ページ単位で並列処理することで生じうるジョブ属性のPDL指定の通知の不都合を防ぐことを可能とする。
[その他の実施例]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。

Claims (4)

  1. PDLデータを受信する受信手段と、
    第1および第2のインタプリタと、
    制御手段とを有する印刷装置であって、
    前記第1のインタプリタは、前記受信手段で受信したPDLデータの1ページ目を、当該第1のインタプリタによって描画される複数のページにおける最初のページとして解釈および描画し、
    前記第2のインタプリタは、前記受信手段で受信したPDLデータの2ページ目を、当該第2のインタプリタによって描画される複数のページにおける最初のページとして解釈および描画し、
    前記第1のインタプリタは、当該第1のインタプリタにとっての前記最初のページの解釈において、全ページに対して特定の処理を適用することを指示する印刷設定コマンドを解釈した場合に、前記特定の処理が前記PDLデータに含まれる全ページに対して適用されるように、当該解釈した印刷設定コマンドを前記制御手段に通知するが、
    前記第2のインタプリタは、当該第2のインタプリタにとっての前記最初のページの解釈において、全ページに対して特定の処理を適用することを指示する印刷設定コマンドを解釈しても、当該解釈した印刷設定コマンドを前記制御手段に通知しないことを特徴とする印刷装置。
  2. 前記第1および第2のインタプリタは、前記制御手段によって異なるスレッドに割り当てられた同一のインタプリタであることを特徴とする請求項1に記載の印刷装置。
  3. 前記第1のインタプリタは、前記1ページ目が無効ページである旨を検出した場合は特別に、当該第1のインタプリタにとっての前記最初のページにて解釈された全ページに対して特定の処理を適用することを指示する印刷設定コマンドを前記制御手段には通知せず、
    前記第2のインタプリタは、前記1ページ目が無効ページである旨を検出した場合は特別に、当該第2のインタプリタにとっての前記最初のページにて解釈された全ページに対して特定の処理を適用することを指示する印刷設定コマンドを前記制御手段に通知することを特徴とする請求項1又は2に記載の印刷装置。
  4. 印刷装置を、請求項1乃至3の何れか1項に記載の印刷装置として機能させるためのプログラム。
JP2016029523A 2016-02-19 2016-02-19 印刷データの解釈を複数の解釈手段で行う印刷装置、印刷方法、プログラム Active JP6746326B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016029523A JP6746326B2 (ja) 2016-02-19 2016-02-19 印刷データの解釈を複数の解釈手段で行う印刷装置、印刷方法、プログラム
US15/430,186 US10534986B2 (en) 2016-02-19 2017-02-10 Printing apparatus having interpreters interpreting print data, printing method, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016029523A JP6746326B2 (ja) 2016-02-19 2016-02-19 印刷データの解釈を複数の解釈手段で行う印刷装置、印刷方法、プログラム

Publications (2)

Publication Number Publication Date
JP2017144673A JP2017144673A (ja) 2017-08-24
JP6746326B2 true JP6746326B2 (ja) 2020-08-26

Family

ID=59630031

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016029523A Active JP6746326B2 (ja) 2016-02-19 2016-02-19 印刷データの解釈を複数の解釈手段で行う印刷装置、印刷方法、プログラム

Country Status (2)

Country Link
US (1) US10534986B2 (ja)
JP (1) JP6746326B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6827798B2 (ja) * 2016-12-21 2021-02-10 キヤノン株式会社 画像形成装置、画像形成装置の制御方法、プログラム。
CN111132848B (zh) * 2017-09-01 2022-08-09 惠普发展公司,有限责任合伙企业 通过打印作业属性控制的打印介质累积器及其控制方法
JP7225971B2 (ja) * 2018-03-16 2023-02-21 株式会社リコー 情報処理装置、情報処理方法、および、情報処理システム
JP2021115764A (ja) * 2020-01-24 2021-08-10 キヤノン株式会社 画像処理装置、画像処理方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6075617A (en) * 1997-11-19 2000-06-13 Hewlett-Packard Company Banner page detection and handling mechanism
JP4194425B2 (ja) * 2003-06-18 2008-12-10 キヤノン株式会社 画像処理装置及びデータ転送方法
JP2007164526A (ja) * 2005-12-14 2007-06-28 Canon Inc 情報処理装置及び方法
US7866661B2 (en) * 2007-08-29 2011-01-11 Pitney Bowes Inc. Sheet/page buffer for sheet handling apparatus
US8368921B2 (en) * 2008-05-09 2013-02-05 Ricoh Company, Ltd. JDF processing in a printing system
JP5284076B2 (ja) 2008-12-25 2013-09-11 キヤノン株式会社 印刷装置及びその制御方法、並びにプログラム
JP5641711B2 (ja) * 2009-05-18 2014-12-17 キヤノン株式会社 画像形成装置、制御方法、及びプログラム
JP2012218178A (ja) * 2011-04-04 2012-11-12 Canon Inc 画像形成装置、その制御方法及びプログラム。
JP2012245734A (ja) * 2011-05-30 2012-12-13 Canon Inc 画像処理装置、画像処理方法及びプログラム
US8780373B2 (en) * 2011-06-13 2014-07-15 Ricoh Company, Ltd. Serial raster image processors used for error correction in a parallel raster image processor environment
JP5847460B2 (ja) 2011-07-01 2016-01-20 キヤノン株式会社 画像形成装置、データ処理方法及びプログラム
US8913269B2 (en) * 2012-09-28 2014-12-16 Konica Minolta Laboratory U.S.A., Inc. Method for printing PDF files containing corrupted pages
JP5408323B1 (ja) * 2012-10-11 2014-02-05 富士ゼロックス株式会社 印刷画像処理システムおよびプログラム
JP6071487B2 (ja) * 2012-11-30 2017-02-01 キヤノン株式会社 印刷制御装置、印刷制御方法、及びプログラム
JP6201799B2 (ja) * 2014-02-13 2017-09-27 富士ゼロックス株式会社 画像処理装置及びプログラム
JP6424678B2 (ja) * 2015-03-02 2018-11-21 株式会社リコー 画像処理システム、画像形成出力制御装置、情報処理方法、情報処理プログラム
JP6503827B2 (ja) * 2015-03-26 2019-04-24 富士ゼロックス株式会社 印刷制御装置、印刷装置及びプログラム

Also Published As

Publication number Publication date
US20170243089A1 (en) 2017-08-24
US10534986B2 (en) 2020-01-14
JP2017144673A (ja) 2017-08-24

Similar Documents

Publication Publication Date Title
JP6746326B2 (ja) 印刷データの解釈を複数の解釈手段で行う印刷装置、印刷方法、プログラム
JP5594470B2 (ja) 印刷制御装置、印刷システムおよびプログラム
US8755060B2 (en) Print control apparatus, image forming system, and non-transitory computer readable medium
JP6748445B2 (ja) 画像形成装置、画像形成装置の制御方法、および、プログラム
JP5268427B2 (ja) 画像形成装置及び画像形成システム
JP2011167857A (ja) 画像形成装置、画像形成方法、および画像形成プログラム
JP6349765B2 (ja) 画像処理装置及びプログラム
JP6666036B2 (ja) 印刷データ処理装置、印刷データ処理方法、およびプログラム
EP2546783B1 (en) Recovery from an out-of-storage condition at a raster data spool.
JP5847460B2 (ja) 画像形成装置、データ処理方法及びプログラム
JP4986144B2 (ja) 印刷制御装置および画像形成システム
JP5232728B2 (ja) 画像形成装置
JP6537372B2 (ja) 画像形成装置、画像形成装置の制御方法、及びプログラム
US9870184B2 (en) Information processing apparatus combining multiple filters, recording medium, and control method
JP2018144372A (ja) 画像形成装置、画像形成装置の制御方法、及びプログラム
JP5589582B2 (ja) 画像処理装置及びプログラム
JP2015022685A (ja) 画像形成装置
JP6519941B2 (ja) 印刷制御装置、画像形成システムおよびプログラム
US20180039870A1 (en) Image processing apparatus, method for controlling image processing apparatus, and storage medium
US9001339B2 (en) Printing apparatus, printing system, printing control method, and storage medium for reducing print time and memory by sending control data via network
JP2019057207A (ja) プリントコントローラー、画像形成システム及び画像形成装置
JP7124544B2 (ja) 印刷データ処理装置及びプログラム
JP2018099804A (ja) 印刷装置および印刷装置の制御方法
JP2014050992A (ja) 画像形成装置のpdl処理に関するメモリ制御
US8629997B2 (en) Print control apparatus and image forming system for rendering image data

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190218

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200107

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200602

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200622

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200707

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200805

R151 Written notification of patent or utility model registration

Ref document number: 6746326

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151