説明

PDLデータ処理装置とPDLデータ処理プログラム

【課題】 適切なタイミングでリソースパートを削除すること。
【解決手段】 プリンタは、複数個のリソースパート(image1、font1等)と、ディスカードパートと、を含むPDLデータを取得する。ディスカードパートは、ページ情報と、削除対象のリソースパートを示すデータ情報と、を含む。プリンタは、1ページ目の中間データの生成が終了した後であって、1ページ目のビットマップデータの生成が終了する前である特定期間T1内に、2ページ目を示すページ情報を含むディスカードパートに含まれるデータ情報が示すリソースパート(image1)を削除する。同様に、プリンタは、特定期間T2内に、3ページ目を示すページ情報を含むディスカードパートに含まれるデータ情報が示すリソースパート(font1)を削除する。比較例と比べると早期にリソースパートを削除することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、PDL(Page Description Language)データを処理するための技術を開示する。
【背景技術】
【0002】
PDLデータから印刷のためのビットマップデータを生成するPDLデータ処理装置が広く知られている。例えば、特許文献1には、PDLデータの一種であるXPS(XML Paper Specification)データからビットマップデータを生成するPDLデータ処理装置が開示されている。XPSデータは、ページパートデータ、リソースパートデータ等の複数個の描画パートデータを含む。PDLデータ処理装置は、複数個の描画パートデータを用いて、ビットマップデータを生成する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2008−33812号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
例えば、3ページ目以降のビットマップデータの生成に不要な特定の描画パートデータは、3ページ目のビットマップデータの生成が開始される前のタイミングにおいて、削除されるのが好ましいと考えられている。メモリの使用量を低減させることができるからである。上記のタイミングで上記の特定の描画パートデータを削除するためには、PDLデータの中に削除パートデータを含める構成が考えられる。削除パートデータは、3ページ目を示すページ情報と、上記の特定の描画パートデータを示すデータ情報と、を含む。この構成によると、PDLデータ処理装置は、削除パートデータを読み込むことによって、上記の特定の描画パートデータを削除すべきタイミング(即ち3ページ目)を知ることができ、そのタイミングにおいて上記の削除対象の描画パートデータを削除することができる。即ち、2ページ目のビットマップデータが生成された後であって、3ページ目のビットマップデータの生成が開始される前に、上記の特定の描画パートデータを削除することができる。なお、上記の特許文献1には、削除パートデータについて何ら開示されていない。
【0005】
本明細書では、適切なタイミングで描画パートデータを削除することができる技術を提供する。
【課題を解決するための手段】
【0006】
本明細書によって開示されるPDLデータ処理装置は、PDLデータ取得部と、記憶制御部と、中間データ生成部と、ビットマップデータ生成部と、削除部と、を備える。PDLデータ取得部は、PDLデータを取得する。PDLデータは、描画パートデータと、削除パートデータと、を含む。削除パートデータは、ページ情報と、削除対象の描画パートデータを示すデータ情報と、を含む。記憶制御部は、PDLデータをメモリに記憶させる。中間データ生成部は、PDLデータを用いて、1以上の処理対象ページの中間データを順次生成する。ビットマップデータ生成部は、1以上の処理対象ページの中間データを順次用いて、1以上の処理対象ページのビットマップデータを順次生成する。削除部は、削除対象の描画パートデータをメモリから削除する。削除部は、特定の処理対象ページの中間データの生成が終了した後であって、特定の処理対象ページのビットマップデータの生成が終了する前である特定期間内に、特定の処理対象ページの次のページを示す特定のページ情報を含む特定の削除パートデータに含まれる特定のデータ情報が示す特定の描画パートデータをメモリから削除する。
【0007】
上記の構成では、削除部は、特定の処理対象ページの中間データの生成が終了した後であって、特定の処理対象ページのビットマップデータの生成が終了する前に、特定の描画パートデータを削除する。この構成によると、例えば、特定の処理対象ページのビットマップデータの生成が終了した後に、特定の描画パートデータが削除される構成と比べると、特定の描画パートデータを早期に削除することができる。即ち、早期にメモリを解放することができ、この結果、例えば、メモリフルのエラーが発生するのを抑制することができる。
【0008】
削除部は、特定の処理対象ページの中間データの生成が終了した後であって、特定の処理対象ページのビットマップデータの生成が開始される前に、特定の描画パートデータをメモリから削除してもよい。この構成によると、特定の描画パートデータをより早期に削除することができ、例えば、特定の処理対象ページのビットマップデータが生成される過程でメモリフルのエラーが発生するのを抑制することができる。
【0009】
中間データ生成部は、描画パートデータを解凍することによって、解凍済みの描画パートデータを生成する解凍部を備えていてもよい。この場合、特定の描画パートデータは、上記の特定のデータ情報が示す解凍前の描画パートデータと、上記の特定のデータ情報が示す解凍済みの描画パートデータと、を含んでいてもよい。この構成によると、解凍前の描画パートデータ及び解凍済みの描画パートデータを、ほぼ同時的に削除することができる。
【0010】
一方において、特定の描画パートデータは、上記の特定のデータ情報が示す解凍済みの描画パートデータを含んでいてもよい。この場合、削除部は、さらに、特定の処理対象ページの中間データの生成が終了する前に、上記の特定のデータ情報が示す解凍前の描画パートデータをメモリから削除してもよい。この構成によると、解凍前の描画パートデータをより早期に削除することができる。
【0011】
また、削除部は、特定の処理対象ページの中間データの生成が終了する前に、特定の削除パートデータを解析してもよい。削除部は、特定期間内に、特定の削除パートデータの解析結果に基づいて、特定の描画パートデータをメモリから削除してもよい。
【0012】
削除部は、特定の処理対象ページが最後のページ以外のページである場合に、特定の削除パートデータの解析を実行し、特定の削除パートデータの解析結果に基づいて、特定期間内に、特定の描画パートデータをメモリから削除してもよい。また、削除部は、特定の処理対象ページが最後のページである場合に、特定の削除パートデータの解析を実行せずに、特定期間内に、特定の描画パートデータをメモリから削除してもよい。この構成によると、特定の処理対象ページが最後のページである場合に、上記の解析が実行されないために、PDLデータ処理装置の処理負荷が低減する。
【0013】
なお、上記のPDLデータ処理装置を実現するための制御方法及びコンピュータプログラムも新規で有用である。
【図面の簡単な説明】
【0014】
【図1】データ処理システムの構成の一例を示す。
【図2】PDLデータを構成する複数種類のパートの分類を示す。
【図3】PDLデータの一例を示す。
【図4】印刷処理のフローチャートを示す。
【図5】図4の続きのフローチャートを示す。
【図6】1ページ目の中間データ及びビットマップデータが生成される様子を示す。
【図7】2ページ目の中間データ及びビットマップデータが生成される様子を示す。
【図8】3ページ目の中間データ及びビットマップデータが生成される様子を示す。
【図9】第1実施例及び比較例において各パートが削除されるタイミングを示す。
【図10】第2実施例において各パートが削除されるタイミングを示す。
【発明を実施するための形態】
【0015】
(第1実施例)
(システムの構成)
図面を参照して実施例を説明する。図1は、本実施例のデータ処理システム2の概略図を示す。データ処理システム2は、LAN4と、USBメモリ6と、PC8と、プリンタ10と、を備える。PC8とプリンタ10とは、LAN4に接続されている。PC8とプリンタ10とは、LAN4を介して、相互に通信可能である。
【0016】
(プリンタ10の構成)
プリンタ10は、表示部12と、操作部14と、USBインターフェイス16aと、印刷実行部18と、ネットワークインターフェイス16bと、記憶部20と、制御部30と、を備える。表示部12は、様々な情報を表示する。操作部14は、複数のキーによって構成される。ユーザは、操作部14を操作することによって、様々な指示をプリンタ10に入力することができる。印刷実行部18は、インクジェット方式又はレーザ方式の印刷機構を備える。印刷実行部18は、制御部30から供給されるビットマップデータに従って、印刷媒体に画像を印刷する。
【0017】
USBインターフェイス16aには、持ち運び可能なUSBメモリ6が接続される。USBメモリ6は、PDLデータ60を記憶する。本実施例のPDLデータ60は、XPSデータである。例えば、ユーザは、所定のデバイス(例えばPC8)を用いてPDLデータ60を生成し、上記の所定のデバイスにUSBメモリ6を接続し、PDLデータ60をUSBメモリ6に記憶させる。次いで、ユーザは、USBメモリ6をUSBインターフェイス16aに接続する。これにより、プリンタ10は、USBインターフェイス16aを介して、USBメモリ6からPDLデータ60を取得することができる。
【0018】
ネットワークインターフェイス16bには、LAN4が接続される。LAN4には、PC8が接続されている。PC8は、PDLデータ80を生成するためのアプリケーション(例えばプリンタ10のためのプリンタドライバ;図示省略)を有する。本実施例のPDLデータ80は、XPSデータである。PC8は、ユーザによって印刷が指示されたデータ(例えば文書データ)を、上記のアプリケーションを用いて、PDLデータ80に変換する。PC8は、PDLデータ80をプリンタ10に送信する。これにより、プリンタ10は、ネットワークインターフェイス16bを介して、PDLデータ80を取得することができる。
【0019】
記憶部20は、ワークメモリ22とプログラム記憶領域24とを備える。ワークメモリ22は、外部から取得されるデータ(例えばPDLデータ60、80等)、制御部30が処理を実行する過程で生成されるデータ等を記憶する。プログラム記憶領域24は、制御部30によって実行されるプログラムを記憶する。制御部30が当該プログラムに従って処理を実行することによって、PDLデータ取得部32、記憶制御部34、中間データ生成部36、ビットマップデータ生成部38、及び、削除部40の各機能が実現される。なお、中間データ生成部36は、解凍部37を備える。
【0020】
(PDLデータの構成)
図2は、XPS形式のPDLデータに含まれる複数種類のパートの分類を示す。図3は、PDLデータ80の一例を示す。なお、PDL60については具体的なデータ構成を図示しないが、PDLデータ60は、PDLデータ80と同様のデータ構成を有する。図3に示されるように、PDLデータ80は、複数個の圧縮パート90〜200を含む。各圧縮パート90〜200のかっこ内の文字列(例えば「image1」)は、各圧縮パート90〜200のファイル名を示す。なお、実際には、ファイル名は拡張子を含んでいるが、本実施例では、拡張子を図示省略している。
【0021】
図2に示されるように、XPS形式のPDLデータは、圧縮描画パート80aと、圧縮ディスカードパート(DiscardControl)80bと、に分類される。PDLデータ80の場合、圧縮ディスカードパート80bは、圧縮ディスカードパート130,170を含む。圧縮ディスカードパート130,170は、ページ情報132,172と、データ情報134,174と、を含む。ページ情報132,172は、ページ番号(例えば「2.fpage」、「3.fpage」等)を示す。また、データ情報134,174は、圧縮描画パート(より具体的には圧縮リソースパート)のファイル名(例えば「image1」、「font1」等)を含む。
【0022】
圧縮描画パート80aは、圧縮ディスカードパート80b以外の全ての種類のパートである。PDLデータ80の場合、圧縮描画パート80aは、圧縮パート90〜120,140〜160,180〜200を含む。圧縮描画パート80aは、後述の中間データを生成するために利用される。圧縮描画パート80aは、さらに、圧縮ページパート(FixedPage)80cと、圧縮リソースパート80dと、圧縮ドキュメントパート(FixedDocument)80eと、その他のパート(例えばFixedDocumentSequence、rels等)と、に分類される。上記のその他のパートについては説明を省略する。
【0023】
PDLデータ80の場合、圧縮ページパート80cは、圧縮ページパート120,160,200を含む。本実施例では、1個の圧縮ページパート120等を用いて、1ページ分の中間データが生成される。各圧縮ページパート120,160,200は、圧縮リソースパートのファイル名を指定する指定情報122,124,162,164,202を含む。例えば、圧縮ページパート120は、圧縮イメージパート100のファイル名「image1」を指定する指定情報122と、圧縮フォントパート110のファイル名「font1」を指定する指定情報124と、を含む。これは、圧縮イメージパート100とフォントパート110とを用いて(実際にはこれらの圧縮100,110から生成される解凍済みパート108,118(図6参照))を用いて、1ページ分の中間データが生成されることを意味する。
【0024】
圧縮リソースパート80dは、さらに、圧縮イメージパート80fと、圧縮フォントパート80gと、に分類される。なお、実際には、圧縮リソースパート80dは、さらに、他の種類のパート(例えばICCProfile)に分類することができるが、本実施例では、他の種類のパートについての説明を省略する。PDLデータ80の場合、圧縮イメージパート80fは、圧縮イメージパート100,150,190を含む。また、PDLデータ80の場合、圧縮フォントパート80gは、圧縮フォントパート110を含む。
【0025】
圧縮ドキュメントパート80eは、複数個の圧縮ページパートのそれぞれが何ページ目の中間データを生成するために使用されるのかを示す。PDLデータ80の場合、圧縮ドキュメントパート80eは、圧縮ドキュメントパート90,140,180を含む。本実施例では、圧縮ドキュメントパート90,140,180は、それぞれ、ページ番号「1」、「2」、「3」を含む。さらに、圧縮ドキュメントパート90,140,180は、それぞれ、圧縮ページパート120,160,200のファイル名を含む。この例の場合、まず、圧縮ページパート120を用いて、1ページ目の中間データが生成される。次いで、圧縮ページパート160を用いて、2ページ目の中間データが生成され、最後に、圧縮ページパート200を用いて、3ページ目の中間データが生成される。
【0026】
(描画データを生成する処理の概要)
続いて、図4〜図8を参照して、上記のPDLデータ80を用いてビットマップデータを生成する印刷処理の内容について説明する。ユーザは、PC8を用いて、プリンタ10に印刷を実行させるための操作(例えば印刷対象の文書データの指定)を実行することができる。これより、PC8は、PDLデータ80を生成する。次いで、PC8は、印刷指示をプリンタ10に送信する。続いて、PC8は、PDLデータ80に含まれる複数個の圧縮パート90等を、所定の順序に従って、プリンタ10に順次送信する。本実施例では、PC8は、図3の上から下の順に、圧縮パート90等をプリンタ10に送信する。即ち、最初に圧縮ドキュメントパート90が送信され、次いで、圧縮イメージパート100が送信される。プリンタ10の制御部30は、PC8から送信される印刷指示を受信すると、図4及び図5の印刷処理を開始する。この場合、PDLデータ取得部32(図1参照)は、PC8から送信されるPDLデータ80を取得し(図4のS12、S18参照)、中間データ生成部36(図1参照)は、PDLデータ80を用いて、中間データを生成する(図5のS38参照)。以下では、PC80から送信されるPDLデータ80に基づいて実行される印刷処理のことを「第1の印刷処理」と呼ぶ。
【0027】
また、ユーザは、USBメモリ6をUSBインターフェイス16aに接続した後に、プリンタ10の操作部14を用いて、USBメモリ6内のPDLデータ60に基づいてプリンタ10に印刷させるための操作を実行することができる。この操作が実行されても、プリンタ10の制御部30は、図4及び図5の印刷処理を開始する。この場合、PDLデータ取得部32は、USBメモリ6内からPDLデータ60を取得し、中間データ生成部36は、PDLデータ60を用いて、中間データを生成する。以下では、USBメモリ6から取得されるPDLデータ60に基づいて実行される印刷処理のことを「第2の印刷処理」と呼ぶ。なお、以下では、第1の印刷処理の場合を例にして、図4及び図5のフローチャートの各処理の内容を説明する。第2の印刷処理の場合には、第1の印刷処理の場合と同様に各処理が実行される。
【0028】
(1ページ目の処理)
図4及び図5のフローチャートの各処理の内容を説明する。なお、以下では、圧縮パートと、当該圧縮パートを解凍することによって生成される解凍済みパートと、をまとめて「パート」と呼ぶ。制御部30は、まず、処理対象ページとして「1」を特定し、処理対象ページの中間データ及びビットマップデータを生成する処理を実行する。制御部30は、処理対象ページの中間データを生成するために使用されるページパート(圧縮ページパート及び解凍済みページパート)がワークメモリ22に存在するのか否かを判断する(S10)。1回目のS10の処理の段階では、PDLデータ80のいずれのパートもワークメモリ22に記憶されていないために、NOと判断される。この場合、PDLデータ取得部32は、プリンタ10の受信バッファ(図示省略)から、PDLデータ80の先頭に配置されている圧縮ドキュメントパート(FixedDocument1)90を取得し、圧縮ドキュメントパート(FixedDocument1)90をワークメモリ22に記憶させる(S12)。次いで、解凍部37(図1参照)は、S12で取得された圧縮ドキュメントパート(FixedDocument1)90を解凍することによって解凍済みドキュメントパート98を生成し、解凍済みドキュメントパート98をワークメモリ22に記憶させる(S14)。これにより、図6に示されるように、ドキュメントパート(FixedDocument1)90,98がワークメモリ22に記憶される。S14を終えると、S10に戻る。
【0029】
上述したように、解凍済みドキュメントパート(FixedDocument1)98は、ページ番号「1」と、圧縮ページパート(1.fpage)120のファイル名「1.fpage」と、を含む。従って、制御部30は、解凍済みドキュメントパート(FixedDocument1)98を読み込むことによって、処理対象ページ「1」の中間データを生成するために使用されるページパート(1.fpage)120,128のファイル名「1.fpage」を知ることができる。このために、2回目のS10の処理では、制御部30は、ファイル名「1.fpage」を有するページパートがワークメモリ22に存在するのか否かを判断する。ここでNOの場合、S10でYESと判断されるまで、S12及びS14の処理が繰り返し実行される。本実施例では、2回目のS12の処理では、圧縮イメージパート(image1)100が取得され、3回目のS12の処理では、圧縮フォントパート(font1)110が取得され、4回目のS12の処理では、圧縮ページパート(1.fpage)120が取得される。この結果、図6に示されるように、各圧縮パート100,110,120と、各解凍済みパート108,118,128と、がワークメモリ22に記憶される。
【0030】
ページパート(1.fpage)120,128がワークメモリ22に記憶されると、制御部30は、S10でYESと判断する。この場合、制御部30は、次の処理対象ページの中間データを生成するために使用されるページパートのファイル名を示すドキュメントパートがワークメモリ22に存在するのか否かを判断する(S16)。現時点では、処理対象ページが「1」であるために、制御部30は、S16の「次の処理対象ページ」として、「2」を採用する。従って、2ページ目の中間データを生成するために使用されるページパート(2.fpage)160,168のファイル名「2.fpage」を示すドキュメントパート(FixedDocument2)140,148がワークメモリ22に存在する場合に、S16でYESと判断され、ドキュメントパート(FixedDocument2)140,148がワークメモリ22に存在しない場合に、S16でNOと判断される。現時点では、ドキュメントパート(FixedDocument2)140,148がワークメモリ22に存在しないために、S16でNOと判断され、S18に進む。
【0031】
1回目のS18の時点では、ドキュメントパート(FixedDocument1)90,98からページパート(1.fpage)120,128までがワークメモリ22に記憶されている。従って、1回目のS18では、PDLデータ取得部32は、受信バッファから圧縮ディスカードパート(discard1)130を取得し、圧縮ディスカードパート(discard1)130をワークメモリ22に記憶させる(S18)。次いで、制御部30は、S18で圧縮パートを取得できたのか否かを判断する(S20)。PDLデータ80の最後の圧縮パート200を既に取得している場合には、S18の処理で圧縮パートを新たに取得することができない。この場合、S20でNOと判断され、S24に進む。一方において、S20でYESの場合、解凍部37は、S18で取得された圧縮ディスカードパート(discard1)130を解凍することによって解凍済みディスカードパート138(図6参照)を生成し、解凍済みディスカードパート138をワークメモリ22に記憶させる(S22)。S22を終えると、S16に戻る。現時点では、ドキュメントパート(FixedDocument2)140,148がワークメモリ22に存在しないために、S16で再びNOと判断され、2回目のS18に進む。2回目のS18の処理では、圧縮ドキュメントパート140(FixedDocument2)が取得され、2回目のS22の処理では、解凍済みドキュメントパート148がワークメモリ22に記憶される。
【0032】
ドキュメントパート(FixedDocument2)140,148がワークメモリ22に記憶されると、S16でYESと判断される。この場合、図5のS30に進む。S30では、削除部40(図1参照)は、解凍済みドキュメントパート(FixedDocument2)148を読み込むことによって、次の処理対象ページ「2」の中間データを生成するために使用される圧縮ページパート(2.fpage)160のファイル名「2.fpage」を知ることができる。削除部40は、ページ情報として「2.fpage」を含むディスカードパートがワークメモリ22に存在するのか否かを判断する。ワークメモリ22に既に記憶されているディスカードパート(discard1)130,138は、「2.fpage」を示すページ情報132を含む(図3参照)。従って、削除部40は、S30でYESと判断し、S32に進む。
【0033】
S32では、削除部40は、解凍済みディスカードパート(discard1)138の内容を解析する。これにより、削除部40は、解凍済みディスカードパート(discard1)138に含まれるデータ情報134が「image1」を指定していることを知ることができる(図3参照)。削除部40は、ファイル名「image1」を有するリソースパートがワークメモリ22に存在するのか否かを判断する(S34)。イメージパート(image1)100,108がワークメモリ22に存在するために、削除部40は、S34でYESと判断する。この場合、図6に示されるように、削除部40は、イメージパート(image1)100,108にフラグ106を対応づける(S36)。S36を終えると、S38に進む。なお、S30又はS34でNOの場合も、S38に進む。
【0034】
S38では、中間データ生成部36は、現在の処理対象ページである1ページ目の中間データを生成するための解凍済みページパート(1.fpage)128を使用して、1ページ目の中間データを生成する。具体的は、中間データ生成部36は、まず、解凍済みページパート(1.fpage)128から指定情報122,124(図3参照)を読み込む。次いで、中間データ生成部36は、指定情報122によって指定される解凍済みイメージパート(image1)108を、所定の中間言語のフォーマットに変換する。なお、上記の所定の中間言語は、一般的に知られているデータフォーマットであってもよいし、プリンタ10のベンダが独自に作成したデータフォーマットであってもよい。上記の所定の中間言語は、ベクタ形式のデータフォーマットであってもよいし、ベクタ形式とビットマップ形式とが複合されたデータフォーマットであってもよい。また、解凍済みページパート(1.fpage)128は、1ページ目の中間データを生成するために必要なテキストを含む。中間データ生成部36は、指定情報124によって指定される解凍済みフォントパート(font1)118に従って記述された上記のテキストを、上記の所定の中間言語のフォーマットに変換する。中間データ生成部36は、変換後のイメージと、変換後の上記のテキストと、を含む1ページ目の中間データ210を生成する。これにより、図6に示されるように、1ページ目の中間データ210がワークメモリ22に記憶される。
【0035】
次いで、削除部40は、削除処理を実行する(S40)。S40では、削除部40は、フラグ106が対応づけられているイメージパート(image1)100,108をワークメモリ22から削除する。即ち、S40では、解凍前のイメージパート100と、解凍後のイメージパート108と、がほぼ同時に削除される。これにより、ワークメモリ22が解放される。
【0036】
続いて、ビットマップデータ生成部38(図1参照)は、1ページ目の中間データ210を使用して、1ページ目のビットマップデータ212を生成する(S42)。本実施例のビットマップデータ212は、例えば、CMYKの多諧調(例えば256階調)のビットマップデータである。これにより、図6に示されるように、1ページ目のビットマップデータ212がワークメモリ22に記憶される。
【0037】
次いで、制御部30は、1ページ目のビットマップデータ212を印刷実行部18(図1参照)に供給する。この結果、印刷実行部18は、1ページ目のビットマップデータ212に従って、1枚の印刷媒体に印刷する。なお、フローチャートには示されていないが、制御部30は、1ページ目のビットマップデータ212を印刷実行部18に供給し終えると、ワークメモリ22内の中間データ210及びビットマップデータ212を削除する。制御部30は、次の処理対象ページが存在するのか否かを判断する(S46)。現時点では、処理対象ページが「1」であり、ドキュメントパート(FixedDocument2)140,148がページ番号として「2」を示す。従って、制御部30は、次の処理対象ページ「2」が存在すると判断し、S46でYESと判断する。この場合、制御部30は、処理対象ページとして「2」を特定し、図4のS10に戻る。
【0038】
(2ページ目の処理)
制御部30は、解凍済みドキュメントパート(FixedDocument2)148を読み込むことによって、処理対象ページ「2」の中間データを生成するために使用されるページパート(2.fpage)160,168のファイル名「2.fpage」を知ることができる。S10の処理では、制御部30は、ファイル名「2.fpage」を有するページパート(2.fpage)160,168がワークメモリ22に存在するのか否かを判断する。ここでNOの場合、S10でYESと判断されるまで、S12及びS14の処理が繰り返し実行される。これにより、圧縮イメージパート(image2)150が取得され、次いで、圧縮ページパート(2.fpage)160が取得される。この結果、図7に示されるように、各圧縮パート150,160と、各解凍済みパート158,168と、がワークメモリ22に記憶される。なお、図7では、イメージパート(image1)100,108(図6参照)がワークメモリ22に存在しない。1ページ目の処理の際に、図5のS40で削除されたからである。
【0039】
ページパート(2.fpage)160,168がワークメモリ22に記憶されると、制御部30は、S10でYESと判断し、S16に進む。S16では、制御部30は、3ページ目の中間データを生成するために使用されるページパート(3.fpage)200,208のファイル名「3.fpage」を示すドキュメントパート(FixedDocument3)180,188がワークメモリ22に存在するのか否かを判断する。現時点では、ドキュメントパート(FixedDocument3)180,188がワークメモリ22に存在しないために、S16でNOと判断される。この場合、S16でYESと判断されるまで、S18〜S22の処理が繰り返し実行される。これにより、圧縮ディスカードパート(discard2)170が取得され、次いで、圧縮ドキュメントパート(FixedDocument3)180が取得される。この結果、図7に示されるように、各圧縮パート170,180と、各解凍済みパート178,188と、がワークメモリ22に記憶される。
【0040】
ドキュメントパート(FixedDocument3)180,188がワークメモリ22に記憶されると、S16でYESと判断され、図5のS30に進む。この場合のS30では、削除部40は、ページ情報172として「3.fpage」を含むディスカードパート(discard2)170,178がワークメモリ22に存在するのか否かを判断する。削除部40は、S30でYESと判断し、解凍済みディスカードパート(discard2)178の内容を解析することによって、データ情報174が「font1」を指定していることを知ることができる(S32)。ファイル名「font1」を有するフォントパート(font1)110,118がワークメモリ22に存在するために、削除部40は、S34でYESと判断し、図7に示されるように、フォントパート(font1)110,118にフラグ116を対応づける(S36)。
【0041】
次いで、中間データ生成部36は、現在の処理対象ページである2ページ目の中間データを生成するための解凍済みページパート(2.fpage)168を使用して、2ページ目の中間データ220を生成する(S38)。即ち、1ページ目の中間データ212を生成する場合と同様に、中間データ生成部36は、中間言語に変換後のイメージ(image2から生成される)と、中間言語に変換後のテキスト(font1で記述されたテキスト(当該テキストは解凍済みページパート168に含まれる))と、を含む2ページ目の中間データ220を生成する。次いで、削除部40は、削除部40は、フラグ116が対応づけられているフォントパート(font1)110,118をワークメモリ22から削除する(S40)。続いて、ビットマップデータ生成部38は、2ページ目の中間データ220を使用して、2ページ目のビットマップデータ222を生成する(S42)。次いで、制御部30は、2ページ目のビットマップデータ222を印刷実行部18に供給し、ワークメモリ22内の中間データ220及びビットマップデータ222を削除する。制御部30は、S46でYESと判断し、処理対象ページとして「3」を特定し、図4のS10に戻る。
【0042】
(3ページ目の処理)
S10の処理では、制御部30は、ファイル名「3.fpage」を有するページパート(3.fpage)200,208がワークメモリ22に存在するのか否かを判断する。ここでNOの場合、S10でYESと判断されるまで、S12及びS14の処理が繰り返し実行される。これにより、圧縮イメージパート(image3)190が取得され、次いで、圧縮ページパート(3.fpage)200が取得される。この結果、図8に示されるように、各圧縮パート190,200と、各解凍済みパート198,208と、がワークメモリ22に記憶される。なお、図8では、フォントパート(font1)110,118(図7参照)がワークメモリ22に存在しない。2ページ目の処理の際に、図5のS40で削除されたからである。
【0043】
ページパート(3.fpage)200,208がワークメモリ22に記憶されると、制御部30は、S10でYESと判断し、S16に進む。制御部30は、S16でNOと判断し、S18で圧縮パートを取得することを試行する。ただし、PDLデータ80の最後の圧縮パート(3.fpage)200は既に取得されている。従って、圧縮パートを取得することができないために、S20でNOと判断される。この場合、削除部40は、ワークメモリ22に存在する全てのリソースパート(イメージパート及びフォントパート)にフラグを対応づける(S24)。図8に示されるように、現時点では、イメージパート(image2)150,158と、イメージパート(image3)190,198と、がワークメモリ22に存在する。従って、削除部40は、イメージパート(image2)150,158にフラグ156を対応づけると共に、イメージパート(image3)190,198にフラグ196を対応づける。
【0044】
S24を終えると、図5のS30〜S34の処理がスキップされ、S38に進む。即ち、削除部40は、ディスカードの解析処理(S32)を実行しない。S38では、中間データ生成部36は、現在の処理対象ページである3ページ目の中間データを生成するための解凍済みページパート(3.fpage)208を使用して、3ページ目の中間データ230を生成する(S38)。即ち、中間データ生成部36は、中間言語に変換後のイメージ(image3から生成される)を含む3ページ目の中間データ230を生成する。次いで、削除部40は、フラグ156及びフラグ196が対応づけられているイメージパート(image2)150,158及びイメージパート(image3)190,198をワークメモリ22から削除する(S40)。続いて、ビットマップデータ生成部38は、3ページ目の中間データ230を使用して、3ページ目のビットマップデータ232を生成する(S42)。次いで、制御部30は、3ページ目のビットマップデータ222を印刷実行部18に供給し、ワークメモリ22内の中間データ230及びビットマップデータ232を削除する。また、4ページ目のページ番号を示すドキュメントパートがワークメモリ22内に存在しないために、制御部30は、S46でNOと判断する。これにより、印刷処理が終了する。なお、S46でNOの場合には、制御部30は、ワークメモリ22内に残存している全てのパート90,98等を削除する。
【0045】
本実施例について詳しく説明した。図9の(第1実施例)に示されるように、本実施例のプリンタ10は、ページパート(1.fpage)120,128、イメージパート(image1)100,108、及び、フォントパート(font1)110,118を使用して、1ページ目の中間データ210を生成する。次いで、プリンタ10は、イメージパート(image1)100,108を削除する。次いで、プリンタ10は、1ページ目の中間データ210を使用して、1ページ目のビットマップデータ212を生成する。即ち、プリンタ10は、1ページ目の中間データ210の生成が終了した後であって、1ページ目のビットマップデータ212の生成が終了する前である特定期間T1内に、2ページ目を示すページ情報132を含むディスカードパート(discard1)130,138に含まれるデータ情報134が示すイメージパート(image1)100,108を削除する。同様に、プリンタ10は、特定期間T2内にフォントパート(font1)110,118を削除し、特定期間T3内にイメージパート(image2、image3)150,158,190,198を削除する。
【0046】
本実施例の手法を採用しない場合には、図9の(比較例)に示される手法を採用することが考えられる。この手法では、例えば、ディスカードパート(discard1)130,138に従って削除処理を実行する場合に、1ページ目のビットマップデータ212の生成が終了した後に、イメージパート(image1)100,108が削除される。しかしながら、比較例の手法では、1ページ目のビットマップデータ212が生成される過程で、ワークメモリ22の残容量が所定量よりも少なくなるという事象(以下では「メモリフル」と呼ぶ)が発生し得る。同様に、2ページ目又は3ページ目のビットマップデータ222,232が生成される過程で、メモリフルのエラーが発生し得る。
【0047】
これに対し、図9に示される本実施例の手法では、1ページ目のビットマップデータ212の生成が終了する前である特定期間T1内にイメージパート(image1)100,108が削除される。同様に、特定期間T2内にフォントパート(font1)110,118が削除され、特定期間T3内にイメージパート(image2、image3))150,158,190,198が削除される。比較例の手法と比べると、早期にリソースパートを削除することができるために、各ページのビットマップデータ212,222,232が生成される過程で、メモリフルのエラーが発生するのを抑制することができる。
【0048】
特に、本実施例では、プリンタ10は、特定期間T1のうち、1ページ目のビットマップデータ212の生成が開始される前に、イメージパート(image1)100,108を削除する。同様に、プリンタ10は、2ページ目のビットマップデータ222の生成が開始される前に、フォントパート(font1)110,118を削除し、3ページ目のビットマップデータ222の生成が開始される前に、イメージパート(image2、image3)150,158,190,198を削除する。より早期にリソースパートを削除することができるために、メモリフルのエラーが発生するのを効果的に抑制することができる。
【0049】
なお、本実施例では、プリンタ10は、処理対象ページが最後のページ以外のページ(1又は2ページ目)である場合には、図5のS32の解析処理を実行する。一方において、プリンタ10は、処理対象ページが最後のページ(3ページ目)である場合には、図4のS20でNOと判断し、図5のS32の解析処理を実行しない。この構成によると、処理対象ページが最後のページである場合に、解析処理が実行されないために、制御部30の処理負荷が低減する。なお、上記の説明が明らかなように、例えば、PDLデータ80が1ページ分のビットマップデータを生成するための圧縮パートのみを含む場合には、1ページ目が最後のページになり、解析処理が全く実行されない。
【0050】
本実施例の各要素と本発明の各要素との対応関係を記載しておく。プリンタ10が「PDLデータ処理装置」の一例である。また、例えば、1ページ目が「特定の処理対象ページ」である場合に、ディスカードパート130,138が「特定の削除パートデータ」の一例であり、ページ情報132が「特定のページ情報」の一例であり、データ情報134が「特定のデータ情報」の一例であり、圧縮イメージパート100及び解凍済みイメージパート108が「特定の描画パートデータ」の一例である。
【0051】
(第2実施例)
第1実施例と異なる点を説明する。第1実施例では、図5のS40の処理において、圧縮リソースパートと、解凍済みリソースパートと、がほぼ同時に削除される。本実施例では、削除部40は、図5のS38の中間データ生成処理において、フラグが対応づけられている圧縮リソースパートを削除し、図5のS40の処理において、フラグが対応づけられている解凍済みリソースパートを削除する。即ち、図10において実線で表わされる上方向の矢印に示されるように、削除部40は、1ページ目の中間データ210が生成される過程において、圧縮イメージパート(image1)100を削除し、特定期間T1内に、解凍済みイメージパート108を削除する。同様に、削除部40は、2ページ目の中間データ220が生成される過程において、圧縮フォントパート(font1)110を削除し、特定期間T2内に、解凍済みフォントパート118を削除する。さらに、削除部40は、3ページ目の中間データ230が生成される過程において、圧縮イメージパート(image2、image3)150,190を削除し、特定期間T3内に、解凍済みイメージパート158,198を削除する。この構成によると、より早期に圧縮リソースパートを削除することができるために、メモリフルのエラーが発生するのを効果的に抑制することができる。
【0052】
なお、本実施例において、図10において破線で表わされる上方向の矢印に示されるように、削除部40は、1ページ目の中間データ210の生成が開始される前に、圧縮イメージパート(image1)100を削除してもよい。同様に、削除部40は、2ページ目の中間データ220の生成が開始される前に、フォントパート(font1)110を削除し、3ページ目の中間データ230の生成が開始される前に、圧縮イメージパート(image2、image3)150,190を削除してもよい。この構成によると、より早期に圧縮リソースパートを削除することができる。
【0053】
本実施例では、例えば、1ページ目が「特定の処理対象ページ」である場合に、解凍済みイメージパート108が「特定の描画パートデータ」の一例であり、圧縮イメージパート100が「特定のデータ情報が示す解凍前の描画パートデータ」の一例である。
【0054】
上記の各実施例の変形例を以下に列挙する。
(1)上記の実施例の技術は、XPSデータ以外の種類のPDLデータを利用する場合にも適用することができる。例えば、PDF、PS(Post Script)等を利用する場合にも適用することができる。なお、本明細書の「PDLデータ」という用語は、ページという概念を用いて記述されるあらゆる種類のデータを含む概念である。
【0055】
(2)上記の実施例では、制御部30を構成する各部32〜40がプリンタ10に備えられており、プリンタ10が図4及び図5の各処理を実行する。しかしながら、PC8が、プリンタドライバに従って、図4及び図5の各処理を実行してもよい。この場合、PC8の制御部(図示省略)が各部32〜40を備える。本変形例では、PC8が「PDLデータ処理装置」の一例である。なお、上記のプリンタドライバは、当該プリンタドライバを格納しているコンピュータ読取可能記憶媒体からPC8にインストールされてもよいし、インターネット上のサーバ等の外部装置からPC8にインストールされてもよい。
【0056】
(3)上記の実施例では、PDLデータ80の中において、圧縮ディスカードパート(discard1)130が先に配置され、圧縮ドキュメントパート(FixedDocument2)140が後に配置されている。従って、図4のS16〜S22の処理によって圧縮ドキュメントパート(FixedDocument2)140を取得する過程において、圧縮ディスカードパート130(discard1)も取得される。このために、1回目のS30(図5参照)の処理を実行する時点において、ディスカードパート(discard1)130,138がワークメモリ22に既に記憶されており、そのディスカードパート(discard1)130,138の解析結果に基づいてフラグ106(図6参照)が設定される。同様に、2回目のS30の処理を実行する時点において、ディスカードパート(discard2)170,178がワークメモリ22に既に記憶されており、そのディスカードパート(discard2)170,178の解析結果に基づいてフラグ116(図7参照)が設定される。即ち、上記の実施例の配列順序を有するPDLデータ80を用いる場合には、図4及び図5のフローチャートを実行することによって、特定期間T1,T2内にイメージパート(image1)100,108及びフォントパート(font1)110,118を削除することができる。しかしながら、PDLデータ内での各圧縮パートの配列順序が上記の実施例と異なる可能性がる。
【0057】
例えば、PDLデータ80では、ページ毎に圧縮ドキュメントパート90,140,180が設けられているが、圧縮ドキュメントパート90,140,180の各情報がまとめて1個の圧縮ドキュメントパート(以下では「特定の圧縮ドキュメントパート」と呼ぶ)に記述され、上記の特定の圧縮ドキュメントパートがPDLデータ80の先頭に設けられている可能性がある。このような配列順序を有するPDLデータを用いる場合にも、特定期間T1,T2内にイメージパート(image1)100,108等を削除できるように、以下の構成を採用してもよい。即ち、プリンタ10は、図4のS10でYESの場合に、少なくとも1個のディスカードパートが取得されるまで、圧縮パートを取得することを繰り返す特定の処理を実行してもよい。プリンタ10は、上記の特定の処理によってディスカードパートが取得された場合に、図5のS30の処理に進んでもよい。この構成によると、1回目のS30の処理を実行する時点、2回目のS30の処理を実行する時点において、それぞれ、ディスカードパート(discard1)130,138、ディスカードパート(discard2)170,178が、ワークメモリ22に記憶されている。即ち、上記の実施例の配列順序と異なる配列順序を有するPDLデータを用いる場合にも、特定期間T1,T2内にイメージパート(image1)100,108及びフォントパート(font1)110,118を削除することができる。
【0058】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。
【0059】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【0060】
2:データ処理システム、10:プリンタ、20:記憶部、22:ワークメモリ、30:制御部、60,80:PDLデータ

【特許請求の範囲】
【請求項1】
PDLデータ処理装置であって、
描画パートデータと、
ページ情報と、削除対象の描画パートデータを示すデータ情報と、を含む削除パートデータと、
を含むPDLデータを取得するPDLデータ取得部と、
前記PDLデータをメモリに記憶させる記憶制御部と、
前記PDLデータを用いて、1以上の処理対象ページの中間データを順次生成する中間データ生成部と、
前記1以上の処理対象ページの前記中間データを順次用いて、前記1以上の処理対象ページのビットマップデータを順次生成するビットマップデータ生成部と、
前記削除対象の描画パートデータを前記メモリから削除する削除部と、を備え、
前記削除部は、特定の処理対象ページの中間データの生成が終了した後であって、前記特定の処理対象ページのビットマップデータの生成が終了する前である特定期間内に、前記特定の処理対象ページの次のページを示す特定のページ情報を含む特定の削除パートデータに含まれる特定のデータ情報が示す特定の描画パートデータを前記メモリから削除する、PDLデータ処理装置。
【請求項2】
前記削除部は、前記特定の処理対象ページの前記中間データの生成が終了した後であって、前記特定の処理対象ページの前記ビットマップデータの生成が開始される前に、前記特定の描画パートデータを前記メモリから削除する、請求項1に記載のPDLデータ処理装置。
【請求項3】
前記中間データ生成部は、前記描画パートデータを解凍することによって、解凍済みの描画パートデータを生成する解凍部を備え、
前記特定の描画パートデータは、前記特定のデータ情報が示す解凍前の描画パートデータと、前記特定のデータ情報が示す解凍済みの描画パートデータと、を含む、請求項1又は2に記載のPDLデータ処理装置。
【請求項4】
前記中間データ生成部は、前記描画パートデータを解凍することによって、解凍済みの描画パートデータを生成する解凍部を備え、
前記特定の描画パートデータは、前記特定のデータ情報が示す解凍済みの描画パートデータを含み、
前記削除部は、さらに、前記特定の処理対象ページの前記中間データの生成が終了する前に、前記特定のデータ情報が示す解凍前の描画パートデータを前記メモリから削除する、請求項1又は2に記載のPDLデータ処理装置。
【請求項5】
前記削除部は、前記特定の処理対象ページの前記中間データの生成が終了する前に、前記特定の削除パートデータを解析し、
前記削除部は、前記特定期間内に、前記特定の削除パートデータの解析結果に基づいて、前記特定の描画パートデータを前記メモリから削除する、請求項1から4のいずれか一項に記載のPDLデータ処理装置。
【請求項6】
前記削除部は、
前記特定の処理対象ページが最後のページ以外のページである場合に、前記特定の削除パートデータの前記解析を実行し、前記特定の削除パートデータの前記解析結果に基づいて、前記特定期間内に、前記特定の描画パートデータを前記メモリから削除し、
前記特定の処理対象ページが前記最後のページである場合に、前記特定の削除パートデータの前記解析を実行せずに、前記特定期間内に、前記特定の描画パートデータを前記メモリから削除する、請求項1から5のいずれか一項に記載のPDLデータ処理装置。
【請求項7】
PDLデータ処理プログラムであって、
描画パートデータと、
ページ情報と、削除対象の描画パートデータを示すデータ情報と、を含む削除パートデータと、
を含むPDLデータを取得するPDLデータ取得処理と、
前記PDLデータをメモリに記憶させる記憶制御処理と、
前記PDLデータを用いて、1以上の処理対象ページの中間データを順次生成する中間データ生成処理と、
前記1以上の処理対象ページの前記中間データを順次用いて、前記1以上の処理対象ページのビットマップデータを順次生成するビットマップデータ生成処理と、
前記削除対象の描画パートデータを前記メモリから削除する削除処理と、
をコンピュータに実行させ、
前記削除処理では、特定の処理対象ページの中間データの生成が終了した後であって、前記特定の処理対象ページのビットマップデータの生成が終了する前である特定期間内に、前記特定の処理対象ページの次のページを示す特定のページ情報を含む特定の削除パートデータに含まれる特定のデータ情報が示す特定の描画パートデータを前記メモリから削除する、PDLデータ処理プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2011−159219(P2011−159219A)
【公開日】平成23年8月18日(2011.8.18)
【国際特許分類】
【出願番号】特願2010−22262(P2010−22262)
【出願日】平成22年2月3日(2010.2.3)
【出願人】(000005267)ブラザー工業株式会社 (13,856)
【Fターム(参考)】