JP6874626B2 - プリンタドライバ - Google Patents

プリンタドライバ Download PDF

Info

Publication number
JP6874626B2
JP6874626B2 JP2017190403A JP2017190403A JP6874626B2 JP 6874626 B2 JP6874626 B2 JP 6874626B2 JP 2017190403 A JP2017190403 A JP 2017190403A JP 2017190403 A JP2017190403 A JP 2017190403A JP 6874626 B2 JP6874626 B2 JP 6874626B2
Authority
JP
Japan
Prior art keywords
data
command
page
printer driver
filter
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
JP2017190403A
Other languages
English (en)
Other versions
JP2019067049A (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.)
Brother Industries Ltd
Original Assignee
Brother Industries Ltd
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 Brother Industries Ltd filed Critical Brother Industries Ltd
Priority to JP2017190403A priority Critical patent/JP6874626B2/ja
Priority to US16/022,991 priority patent/US10445027B2/en
Priority to CN201810789270.3A priority patent/CN109582250B/zh
Publication of JP2019067049A publication Critical patent/JP2019067049A/ja
Priority to US16/556,359 priority patent/US10860264B2/en
Application granted granted Critical
Publication of JP6874626B2 publication Critical patent/JP6874626B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • G06F3/1206Improving or facilitating administration, e.g. print management resulting in increased flexibility in input data format or job format or job type
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • G06F3/1208Improving or facilitating administration, e.g. print management resulting in improved quality of the output result, e.g. print layout, colours, workflows, print preview
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1211Improving printing performance
    • G06F3/1212Improving printing performance achieving reduced delay between job submission and print start
    • G06F3/1214Improving printing performance achieving reduced delay between job submission and print start at the submitting node
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1218Reducing or saving of used resources, e.g. avoiding waste of consumables or improving usage of hardware resources
    • G06F3/122Reducing or saving of used resources, e.g. avoiding waste of consumables or improving usage of hardware resources with regard to computing resources, e.g. memory, CPU
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1224Client or server resources management
    • G06F3/1228Printing driverless or using generic drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1244Job translation or job parsing, e.g. page banding
    • G06F3/1246Job translation or job parsing, e.g. page banding by handling markup languages, e.g. XSL, XML, HTML
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1244Job translation or job parsing, e.g. page banding
    • G06F3/1247Job translation or job parsing, e.g. page banding by conversion to printer ready format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1244Job translation or job parsing, e.g. page banding
    • G06F3/1248Job translation or job parsing, e.g. page banding by printer language recognition, e.g. PDL, PCL, PDF
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1253Configuration of print job parameters, e.g. using UI at the client
    • G06F3/1254Automatic configuration, e.g. by driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1275Print workflow management, e.g. defining or changing a workflow, cross publishing
    • G06F3/1277Print workflow management, e.g. defining or changing a workflow, cross publishing using filter pipeline, e.g. outside the driver, adding traps
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1285Remote printer device, e.g. being remote from client or server
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/02Affine transformations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1211Improving printing performance
    • G06F3/1212Improving printing performance achieving reduced delay between job submission and print start
    • 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/1848Generation of the printable image
    • G06K15/1849Generation of the printable image using an intermediate representation, e.g. a list of graphical primitives
    • 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
    • G06K15/1873Increasing spatial resolution; Anti-aliasing
    • G06K15/1874Increasing spatial resolution; Anti-aliasing with provisions for treating some of the print data differently
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/387Composing, repositioning or otherwise geometrically modifying originals
    • H04N1/393Enlarging or reducing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Editing Of Facsimile Originals (AREA)
  • Image Processing (AREA)

Description

本発明は、プリンタドライバに関する。
マイクロソフト(登録商標)社は、XPSプリンタドライバというアーキテクチャを採用している。XPSプリンタドライバは、複数のフィルタによって構成されるパイプラインを有する。各フィルタには、それぞれ異なる機能が実装される。具体的には、印刷対象データを拡縮する機能や、印刷対象データを回転させて向きを変える機能である。
プリンタの開発ベンダが、各フィルタを開発することも認められている(例えば、特許文献1参照)。
特開2015−225481号公報
XPSデータは、文字、図形、塗りつぶしなどの描画オブジェクトを示すオブジェクトデータと、オブジェクトデータを対象とした変換を指示する変換指示データとを含んでいる。フィルタは、変換指示データを元に、回転、拡大や縮小、平行移動などの変換処理をオブジェクトデータに対して行う。1つのページを示すXPSデータは、ページを構成する複数のオブジェクト各々を示す複数のオブジェクトデータを含んでいる。オブジェクトデータは行列を含んでいる、変換処理は、描画オブジェクトに含まれる行列に、変換処理に対応する行列を乗算する処理である。そのため、1つのページを対象に複数の変換処理を行うと、N(描画オブジェクトの数)×M(変換処理の数)回の行列演算が必要になる。すなわち、変換処理の開始から印刷データの生成までに、多くの時間が必要になる。
本発明は、上記の事情に鑑みてなされたものであり、その目的は、印刷データの生成に要する時間を短くできる手段を提供することにある。
本明細書では様々な開示を行う。開示例の一例であるプリンタドライバは、コンピュータを備えた情報処理装置によって実行される。該プリンタドライバは、前記コンピュータに、描画オブジェクトを示す第1オブジェクトデータと、編集指示データとを含むXPS形式の印刷対象データを前記情報処理装置にインストールされたOSから受け付ける受付処理と、前記編集指示データに応じた複数の第1コマンドを生成する生成処理と、前記第1コマンドによって前記第1オブジェクトデータを改変する改変処理と、を実行させる。前記第1コマンドは、前記第1オブジェクトデータに付与された行列を変換する変換行列をそれぞれ指示する。前記改変処理は、複数の前記変換行列を乗じて統合変換行列を生成し、前記統合変換行列を前記第1オブジェクトデータに付与された行列に乗じる処理である。
上記構成によれば、改変処理において、変換行列を乗じて統合変換行列を生成し、生成した統合変換行列を第1オブジェクトデータに付与された行列に乗じるから、各変換行列によってそれぞれ第1オブジェクトデータを改変するよりも、情報処理装置のCPUの演算回数が低減する。その結果、印刷データの生成時間が短くなる。
図1は、実施形態に係るPC10の構成図である。 図2は、OS31及びプリンタドライバ23の処理を説明する図である。 図3(A)は、第1のステージを示すフローチャートであり、図3(B)は、第2のステージを示すフローチャートであり、図3(C)は、第3のステージを示すフローチャートである。 図4(A)は、第4のステージを示すフローチャートであり、図4(B)は、Nup処理を示すフローチャートである。 図5は、最後のステージを示すフローチャートである。 図6は、改変処理を示すフローチャートである。 図7は、改変処理の具体的な処理を示すフローチャートである。 図8は、コンテントボックスの回転を説明する説明図である。 図9は、Nupを説明する説明図である。 図10(A)及び図10(B)は、コマンドスタックにプッシュされるコマンドを示す図であり、図10(C)〜図10(J)は、コマンドが解決される手順を示す説明図である。 図11(A)は、変形例に係るプリンタドライバ60の構成を示す図であり、図11(B)は、変形例に係る最後のステージを説明するフローチャートである。
以下、適宜図面を参照して本発明の実施形態について説明する。なお、以下に説明される実施形態は本発明の一例にすぎず、本発明の要旨を変更しない範囲で、本発明の実施形態を適宜変更できることは言うまでもない。例えば、後述する各処理の実行順序は、本発明の要旨を変更しない範囲で、適宜変更することができる。
図1は、本実施形態のプリンタドライバ32がインストールされて実行されるPC10の概略構成図である。PC10は、例えば、パーソナルコンピュータである。以下では、主に印刷の実行に必要な構成に限定して説明がされる。PC10は、情報処理装置の一例である。
PC10は、入力I/F21と、通信I/F22と、CPU23と、メモリ24と、メインメモリ25と、バス26とを備える。
入力I/F21は、有線または無線でユーザI/F11と接続されている。ユーザI/F11は、キーボードやマウスである。ユーザI/F11は、印刷指示や印刷設定などのユーザの指示を受け付ける。ユーザI/F11を用いて入力されたユーザの指示は、入力I/F21を通じてPC10に入力される。
通信I/F22は、USBケーブルやLANケーブルを用いてプリンタ12と接続され、或いは無線LANでプリンタ12と接続され、プリンタ12と通信を行う。例えば、PC10から印刷データがプリンタ12に入力される。プリンタ12からは、紙詰まりが発生したことを示す情報などがPC10に入力される。
また、PC10は、演算処理を行うCPU23と、後述の種々のプログラムを記憶するメモリ24と、当該プログラムの実行に用いられるメインメモリ25とを備える。メモリ24は、例えば、大容量の記憶が可能なハードディスクである。メインメモリ25は、例えば、データへのアクセスが速いDRAMなどのRAMである。
CPU23は、メモリ24に記憶されたプログラムを実行する。具体的には、メモリ24に記憶されたプログラムがメインメモリ25にコピーされた後、CPU23は、プログラムの各アドレスに記述された命令を順に実行する。CPU23は、コンピュータの一例である。
メモリ24は、オペレーティングシステムであるOS31と、プリンタドライバ32と、文書プログラム33と、画像プログラム34とを記憶する。
メモリ24及びメインメモリ25は、コンピュータが読み取り可能なストレージ媒体であってもよい。コンピュータが読み取り可能なストレージ媒体とは、non−transitoryな媒体である。non−transitoryな媒体には、上記の例の他に、CD−ROM、DVD−ROM等の記録媒体も含まれる。また、non−transitoryな媒体は、tangibleな媒体でもある。一方、インターネット上のサーバなどからダウンロードされるプログラムを搬送する電気信号は、コンピュータが読み取り可能な媒体の一種であるコンピュータが読み取り可能なストレージ媒体であるが、non−transitoryなコンピュータが読み取り可能なストレージ媒体には含まれない。
文書プログラム33は、文書の作成を行うプログラムである。画像プログラム34は、写真などの画像の加工を行うプログラムである。本実施例では、文書プログラム33や画像プログラム34のことを、便宜上「編集プログラム」とも記載する。PC10のユーザが、作成した文書や画像の印刷をユーザI/F11を用いて指示すると、編集プログラムは、印刷が指示された文書や画像を示す画像データを印刷対象データとして出力する。印刷対象データは、OS31が解釈可能な形式である。また、ユーザI/F11を介して選択されたプリンタである選択プリンタを示す情報と、ユーザI/F11を介して入力された印刷設定が、印刷対象データとともに出力される。編集プログラムは、プリンタの選択と印刷設定の入力とを示唆する設定画面をPC10のディスプレイに表示させ、ユーザI/Fを介した入力を受け付け、選択プリンタを示す情報と印刷設定ともメモリ24に記憶させる。
なお、文書プログラム33や画像プログラム34の他、表計算プログラムやその他のプログラムが編集プログラムの一例であってもよい。編集プログラムは、選択プリンタに対応するプリンタドライバ32から印刷設定を取得し、印刷対象データとともに出力してもよい。OS31が設定画面を表示させ、ユーザI/F11を介した入力を受け付けて、選択プリンタを示す情報と印刷設定とをメモリ24に記憶させてもよい。この場合、OS31は、編集プログラムが出力した印刷対象データを取得したときに、メモリ24から、選択されたプリンタを示す情報と印刷設定とを読み出す。
印刷設定には、例えば、A4やB5などの用紙サイズの設定、拡大率や縮小率の設定、ウォーターマークの有無の設定、ポートレイやランドスケープなどの印刷方向の設定、モノクロやカラーなどの印刷色の設定、及びNupの設定などが含まれる。後述するプリントチケットは、印刷設定から変換されたデータであり、編集指示データの一例である。プリントチケットの例を図9(B)に示す。図9(B)に示すプリントチケットは、印刷対象データの全ページを対象として2in1が設定されており、1ページ目を対象として、ウォーターマーク有、向きはポートレートが設定されており、2ページ目を対象として、ウォーターマーク無、向きはランドスケープが設定されていることを示している。もちろん、プリントチケットは、これ以外の設定を示していてもよい。例えば、印刷サイズ、両面印刷か片面印刷か、カラーかモノクロか、などを示していてもよい。
なお、基本的には、後述する第1〜第4のステージでコマンドを生成するために必要な情報の全てがプリントチケットに含まれている。例えば、図9(B)に示すプリントチケットの、1ページ目を対象とした設定は、ウォーターマーク有であることを示す情報だけでなく、テキストデータに基づくウォーターマークであることを示す情報、不図示の”Watermark”というテキストデータそのもの、ウォーターマークの位置、サイズを示す情報なども含まれている。なお、ウォーターマークの位置を示す情報が、後述するコンテントボックス内の相対位置を示していてもよい。この場合、後述するXPSデータ内のコンテントボックスの位置を示す情報もコマンドの生成に用いられる。
ウォーターマークとは、印刷される文字や画像に重ねられる半透明の文字や図形であり、例えば、著作権の存在などを示すために用いられる。
Nupとは、2ページや4ページなど複数のページを1枚に集約して印刷することを示す印刷設定であり、Nin1とも称される。
OS31は、プリンタドライバ32や編集プログラムなどの他のプログラムの実行を管理するプログラムであり、例えば、マイクロソフトウインドウズ(登録商標)である。
OS31は、編集プログラムが出力した印刷対象データをXPS(XML Paper Specification)形式の印刷対象データに変更するDLLを有する。また、OS31は、編集プログラムが出力した印刷設定からプリントチケットを生成するDLLを有する。また、OS31は、XPS形式の印刷対象データ及びプリントチケットをOPC(Open Packaging Conventions)によってパッケージングするDLLを有する。
XPSは、マイクロソフト(登録商標)により、印刷処理用のファイル形式として開発された型式であり、XAML(Extensible Application Markup Language)のサブセットである。XAMLは、XMLをベースとしたマークアップ言語である。XPS型式のデータは、アフィン変換を行うためのアフィン変換行列を有しており、画質を劣化させることなく画像を拡縮したり回転したりすることができる。
XPS形式の印刷対象データは、編集プログラムが出力した印刷対象データをXPS形式のデータに変更したXAMLドキュメントである。XPS形式の印刷対象データのことをXPSデータとも記載する。XPSデータは、1ページをFixed Pageというデータ単位で示す示すデータである。すなわち、複数ページを示す印刷対象データは、複数のFixed Pageを含むXPSデータに変換される。Fixed Pageの例を図9(A)に示す。Fixed Pageは、ページの幅を示すPage Width、ページの高さを示すPage Height、ページ内のコンテントボックスを示すContentBox、及びビジュアル要素を有する。図9(A)の例では、1ページ目を示すFixed Pageは、Page Widthが210で、Page Heightが297である。ContentBoxは、例えば、画像が描画される領域を示し、ページ端からContentBoxの端までの余白を示すMarginや、ContentBoxの幅を示すWidth及びContentBoxの高さを示すHeightのデータを有する。図9(A)の例では、1ページ目のContentBoxは、Marginが幅5、高さ方向5で、Widthが200で、Heightが287である。
ビジュアル要素は、Path要素、Glyphs要素、及びCanvas要素のうち、少なくともいずれかを含む。各ビジュアル要素は、Render Transformとして、アフィン変換行列をそれぞれ有する。アフィン変換行列は、ビジュアル要素の位置や大きさや向きを規定する行列である。すなわち、ビジュアル要素とは、位置や大きさや向きを規定するデータを含む画像データである、とも言える。例えば、ビジュアル要素が有するアフィン変換行列に、縮小を示すアフィン変換行列を乗じることにより、当該ビジュアル要素が縮小され、回転を示すアフィン変換行列を乗じることにより、当該ビジュアル要素が回転される。ビジュアル要素は、描画オブジェクトを示す第1オブジェクトデータの一例であり、アフィン変換行列は、変換行列の一例である。図9(A)は、1ページ目のFixed Pageが「A」という画像を示すビジュアル要素を含み、2ページ目のFixed Pageが「B」という画像を示すビジュアル要素を含んでいることを示している。なお、「A」「B」を囲んでいる矩形は、外側がページの範囲を示し、内側がコンテントボックスの範囲を示している。
プリンタドライバ32は、いわゆるXPSプリンタドライバと称される印刷用のドライバである。プリンタドライバ32は、フィルタ41を備える。フィルタ41は、DLLである。フィルタ41は、入力されたXPS形式の印刷対象データを印刷設定にしたがって改変し、PDL形式の印刷データを生成して出力する。すなわち、印刷設定に従った印刷対象データの改変、及び改変された印刷対象データのPDL形式へのデータ変更は、フィルタ41のみによって行われる。フィルタ41は、第1フィルタの一例である。
フィルタ41は、図6に示される改変処理の実行のために、コマンドがプッシュ及びポップされるコマンドスタック及びビジュアル要素スタックというデータ構造を用いる。
図2を参照して、PC10のOS31及びプリンタドライバ32が行う処理について説明する。OS31は、編集プログラムで作成された文書ファイルや画像ファイル(印刷対象データ)及び印刷設定の入力を受け付けると(S11)、前述のDLLを用いて、印刷対象データをXPS形式の印刷対象データに変更し、また、印刷設定からプリントチケットを生成する(S12)。
一方、プリンタドライバ32は、不図示の入力関数(DLL)を用いて、OS31が生成したXPS形式の印刷対象データ及びプリントチケットの入力を受け付ける(S13)。ここにおいて、プリンタドライバ32は、ストリーム入力としてデータを受け付ける。ストリーム入力としてデータを受け付けるか、XPS入力としてデータを受け付けるかは、プリンタドライバ32が指定する入力関数によって決定される。なお、プリンタドライバ32は、XPS入力によってデータを受け付けてもよい。
なお、OS31及びプリンタドライバ32は、いずれもメインメモリ25上で実行されるから、「OS31からプリンタドライバ32への入力」は、データ処理上のものであり、ユーザI/F11からPC10への印刷設定の入力や、PC10からプリンタ12への印刷データの入力における物理的な入力とは相違する。プリンタドライバ32がXPS形式の印刷対象データ及びプリントチケットの入力を受け付ける処理は、受付処理の一例である。
なお、本明細書では、基本的に、プログラムに記述された命令に従ったCPU23の処理を示す。すなわち、以下の説明における「判断」「抽出」「選択」「算出」「決定」「特定」「取得」「受付」「制御」「設定」等の処理は、CPU23の処理を表している。CPU23による処理は、OS31を介したハードウェア制御も含む。なお、「取得」は、要求を必須とはしない概念で用いる。すなわち、CPU23が要求することなくデータを受信するという処理も、「CPU23がデータを取得する」という概念に含まれる。また、本明細書中の「データ」とは、コンピュータに読取可能なビット列で表される。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。本明細書中の「情報」についても同様である。また、「命令」「応答」「要求」等の処理は、「命令」「応答」「要求」等を示す情報を通信することにより行われる。また、「命令」「応答」「要求」等の文言を、「命令」「応答」「要求」等を示す情報そのものという意味で記載してもよい。
プリンタドライバ32は、入力されたXPS形式の印刷対象データに対して、印刷設定にしたがって印刷対象データを改変し、改変した印刷対象データをPDL型式の印刷データに変換する(S14〜S16、及び、図3〜図6の処理)。
プリンタドライバ32は、PDL形式の印刷データの作成後、不図示の出力関数(DLL)を用いて、PDL形式の印刷データをOS31へ出力する(S17)。ここにおいて、プリンタドライバ32は、XPS出力として印刷データを出力する。ストリーム出力として印刷データを出力するか、XPS出力として印刷データを出力するかは、プリンタドライバ32が指定する出力関数によって決定される。なお、プリンタドライバ32は、ストリーム出力によってデータを出力してもよい。
一方、OS31は、プリンタドライバ32が出力したPDL形式の印刷データを、そのままの形式で、或いは、他の形式にデータを変更して、通信I/F22を介してプリンタ12へ送信する(S18)。
プリンタドライバ32が実行するS14〜S16について、図3から図10を参照して詳しく説明する。
プリンタドライバ32は、XPS形式の印刷対象データ、及びプリントチケットの入力を受け付ける。プリンタドライバ32は、図3に示される第1のステージ、第2のステージ、第3のステージ、図4に示される第4のステージ、及び図5に示される最後のステージによってパイプラインを構築している。具体的には、プリンタドライバ32は、不図示のステージマネージャを備えており、ステージマネージャには、第1〜第4のステージの順番でXPSデータをパイプライン処理すること、及び、XPSデータ全体に対して第1〜第4のステージのパイプライン処理が完了したら、最後のステージによってXPSデータを処理すること、がプログラミングされている。なお、具体的には、ステージマネージャがXPS形式の印刷対象データ、及びプリントチケットの入力を受け付ける。
ステージマネージャは、パイプライン処理の開始前に、XPSデータに含まれる各Fixed Pageそれぞれに、コマンドスタック及びビジュアル要素スタックを対応付ける。ステージマネージャは、スタックが対応付けられたFixed Pageを、パイプラインの最初のステージに受け渡す(S15)。最初のステージとは、具体的には、第1のステージである。なお、「スタックを対応付ける」とは、スタックをFixed Pageに追加するということも含む概念であってよい。S15の処理は、まず、先頭ページのFixed Pageを対象に行われる。ステージマネージャは、Fixed Pageのパイプライン処理が完了すると、次のページのFixed Pageをパイプラインの最初のステージに受け渡す(S15)。この処理は、全てのFixed Pageに対してループして実行される(S14、S16)。詳しくは後述するが、最初のステージに受け渡された印刷対象データは、パイプラインの各ステージで処理される。
図3(A)に示される第1のステージは、印刷対象データにビジュアル要素を追加するステージである。フィルタ41は、第1のステージにおいて、プリントチケットに、ビジュアル要素の追加が必要となる設定が含まれているかを判断する(S21)。ビジュアル要素とは、例えば、ウォーターマークである。フィルタ41は、ビジュアル要素の追加が必要となる設定が含まれているとS21で判断した場合(S21:Yes)、プリントチケットに含まれる情報に従って、ビジュアル要素をFixed Pageに追加するコマンドである追加コマンドを生成し(S22)、生成した追加コマンドを、Fixed Pageに対応するコマンドスタックにプッシュする(S23)。追加コマンドは、第2コマンドの一例である。
図9(B)の例では、1ページ目がウォーターマーク有であることを示す情報がプリントチケットに含まれている。そのため、フィルタ41は、ステージマネージャから1ページ目のFixed Pageが受け渡されたとき(S21:Yes)、ウォーターマークをFixed Pageに追加するための追加コマンドを生成する(S22)。フィルタ41は、プリントチケットに含まれる情報に従って、テキスト”Watermark”に基づいた画像データ(ビジュアル要素の一例)を生成する。フィルタ41は、生成した画像データと、ウォーターマークの位置とサイズとを示す情報を含む追加コマンドを生成する。具体的には、ウォーターマークの位置とサイズとを示す情報が画像データに含まれていてもよい。フィルタ41は、生成した追加コマンドを1ページ目のコマンドスタックにプッシュする(S23)
次に、フィルタ41は、Fixed Pageをステージマネージャに受け渡す(S24)。ステージマネージャは、受け渡されたFixed Pageをパイプラインに従って次のステージに受け渡す。
一方、フィルタ41は、ビジュアル要素の追加が必要となる設定が含まれていないとS21で判断した場合(S21:No)、すなわち、図9(B)の例では、2ページ目の場合、S24の処理に移る。
第2のステージから第4のステージまでは、ContentBoxを改変するステージである。印刷設定に従って、第2のステージから第4のステージまででContentBoxが改変され、ContentBoxの改変の際に、改変に応じた種々のコマンドが生成される。生成されたコマンドにより、最後のステージの改変処理(S81)において、ビジュアル要素が改変される。以下、詳しく説明がされる。
図3(B)に示される第2のステージは、ContentBoxを回転するステージである。フィルタ41は、第2のステージにおいて、プリントチケットに、ContentBoxの回転が必要となる設定が含まれているか否かを判断する(S31)。フィルタ41は、ContentBoxの回転が必要となる設定が含まれているとS31で判断すると(S31:Yes)、プリントチケットに含まれる情報に従って、ContentBoxを回転するコマンドを生成し(S32)、生成したコマンドを、Fixed Pageに対応するコマンドスタックにプッシュする(S33)。
図9(B)の例では、2ページ目がポートレートであるため、フィルタ41は、ステージマネージャから2ページ目のFixed Pageを受け渡されると(S31:Yes)、印刷設定に従ってContentBoxを90度回転する。その際、フィルタ41は、ContentBoxの回転に応じたコマンドを生成し、生成したコマンドをFixed Pageに対応するコマンドスタックにプッシュする。
次に、フィルタ41は、Fixed Pageをステージマネージャに受け渡す(S34)。ステージマネージャは、受け渡されたFixed Pageをパイプラインに従って次のステージに受け渡す。
一方、フィルタ41は、ContentBoxの回転が必要となる設定が含まれていないとS31で判断した場合(S31:No)、すなわち、図9(B)の例では、1ページ目の場合、S34の処理に移る。
図3(C)に示される第3のステージは、ContentBoxを拡縮するステージである。フィルタ41は、第3のステージにおいて、プリントチケットに、ContentBoxの拡縮が必要となる設定が含まれているか否かを判断する(S41)。フィルタ41は、ContentBoxの拡縮が必要となる設定が含まれているとS41で判断すると(S41:Yes)、プリントチケットに含まれる情報に従って、ContentBoxを拡縮するコマンドを生成し(S42)、生成したコマンドを、Fixed Pageに対応するコマンドスタックにプッシュする(S43)。
次に、フィルタ41は、Fixed Pageをステージマネージャに受け渡す(S44)。ステージマネージャは、受け渡されたFixed Pageをパイプラインに従って次のステージに受け渡す。
一方、フィルタ41は、ContentBoxの拡縮が必要となる設定が含まれていないとS41で判断した場合(S41:No)、すなわち、図9(B)の例では、1ページ目の場合と2ページ目の場合の両方の場合、S44の処理に移る。
図4(A)に示される第4のステージは、印刷設定の「Nup」に対応するステージであり、複数のページの各ContentBoxを1ページにまとめるステージである。ステージマネージャは、受け渡されたFixed Pageをメモリ24に記憶させる(S51)。次にステージマネージャは、印刷対象データの全てのFixed PageをS51で記憶させたか否かを判断する(S52)。ステージマネージャは、全てのFixed Pageが入力されていないと判断すると(S52:No)、Nページ分のFixed Pageを記憶したか否かを判断する(S53)。ステージマネージャは、Nページ分のFixed Pageを記憶していないと判断すると(S53:No)、ステージマネージャに、次のFixed Pageを要求する情報を受け渡す。具体的には、NULLを受け渡してもよい。
一方、ステージマネージャは、Nページ分のFixed Pageデータを記憶した判断すると(S53:Yes)、或いは、印刷対象データの全てのFixed Pageが入力されたと判断すると(S52:Yes)、Nup処理を実行する(S54)。
図4(B)を参照して、S54のNup処理について説明する。まず、ステージマネージャは、印刷設定に従って、1ページ目(以下、第1ページと記載する)のContentBoxの拡縮率(縮小率)を決定し、決定した拡縮率のアフィン変換行列を示すコマンドを生成する(S61)。次に、ステージマネージャは、生成したコマンドを第1ページのコマンドスタックにプッシュする(S62)。次に、ステージマネージャは、印刷設定に従って、第1ページのContentBoxを移動し、コマンドを生成する(S63)。S63で生成されるコマンドは、移動のアフィン変換行列を示す。当該アフィン変換行列は、ContentBoxの移動量に応じた移動を示す。すなわち、生成されたコマンドが示すアフィン変換行列が乗じられたビジュアル要素は、ContentBoxの移動量に等しい移動量で移動される。
次に、ステージマネージャは、印刷設定に従って、2ページ目(以下、第2ページと記載する)の拡縮率(縮小率)を決定し、決定した拡縮率のアフィン変換行列を示すコマンドを生成する(S66)。なお、以下に説明されるS66〜S70の処理は、第2ページ以降の各ページに対してループして行われる(S65、S71)。すなわち、印刷設定が4in1である場合、S66〜S70の処理は、2〜4ページ目に対してループして実行される。
次に、ステージマネージャは、S66で生成したコマンドを、第2ページのコマンドスタックにプッシュする(S67)。次に、ステージマネージャは、印刷設定に従って、第2ページのContentBoxを移動し、コマンドを生成する(S68)。S68で生成されるコマンドは、移動のアフィン変換行列を示す。当該アフィン変換行列は、第2ページのContentBoxの移動量に応じた移動を示す。ステージマネージャは、S68で生成したコマンドを第2ページのコマンドスタックにプッシュする(S69)。
次に、ステージマネージャは、縮小及び移動した第2ページのContentBoxを第1ページに追加するための追加コマンドを生成する。生成される追加コマンドは、縮小及び移動した第2ページのビジュアル要素を第1ページに追加することを示すコマンドである。ステージマネージャは、生成したコマンドを第1ページのコマンドスタックにプッシュする(S70)。
ステージマネージャは、各ページについてS66〜S70の処理をループして実行すると、Nup処理を終了する。
図4(A)に示されるように、ステージマネージャは、Nup処理(S54)の実行後、パイプラインに従って次のステージにFixed Pageを受け渡す(S55)。ステージマネージャは、第4のステージからFixed Pageを受け渡された場合、Fixed Pageをパイプラインに従って最後のステージに受け渡す。一方、ステージマネージャは、第4のステージから次のページのFixed Pageを要求する情報を受け渡された場合、次のページのFixed Pageをパイプラインに従って最初のステージに受け渡す。
図5に示される最後のステージは、他の全てのステージの実行後に実行される。まず、ステージマネージャは、最後のステージにおいて、改変処理を実行する(S81)。改変処理は、最後のステージまでの他のステージにおいてコマンドスタックにプッシュしたコマンドを用いてビジュアル要素を改変する処理である。
図6を参照して、改変処理について説明する。以下で説明されるS83からS88の処理は、各ページについて、コマンドが空になるまでループして実行される(S82、S89)。また、S82〜S90の処理は、全ページに対してループして実行される(S81、S91)。
フィルタ41は、第nページのコマンドスタックからコマンドをポップし、ポップしたコマンドの種類を判断する(S83)。nは自然数である。フィルタ41は、ポップしたコマンドが、平行移動や回転や拡縮のアフィン変換行列を示す「m」であると判断すると、コマンドが示すアフィン変換行列を統合アフィン変換行列Aに乗じて新たな統合アフィン変換行列とする(S84)。なお、統合アフィン変換行列の初期値は、単位行列Eである。
フィルタ41は、ポップしたコマンドが、ビジュアル要素の追加を示す「v」であると判断すると、コマンドv’を生成する(S85)。具体的に説明すると、ポップしたコマンドが示すビジュアル要素が有するアフィン変換行列を統合アフィン変換行列に乗じ、乗じて得たアフィン変換行列を有するビジュアル要素を示すコマンドをコマンドv’とする。フィルタ41は、生成したコマンドを第nページのビジュアル要素スタックにプッシュする(S86)。
フィルタ41は、ポップしたコマンドが、ページの追加を示す「p」であると判断すると、コマンドp’を生成する(S87)。具体的に説明すると、ポップしたコマンドが示すページのコマンドスタックからコマンドスタックが空になるまでコマンドをポップして、S83〜S88の処理を実行する。S83〜S88の処理を実行することによって得られたビジュアル要素の追加を示すコマンドをコマンドp’として生成する。フィルタ41は、生成したコマンドp’を第nページのビジュアル要素スタックにプッシュする(S88)。
フィルタ41は、各ページについて、コマンドスタックが空になったと判断すると、ビジュアル要素スタックからコマンドをプッシュし、プッシュしたコマンドが示すビジュアル要素をFixed Pageの末尾に加える(S90)。
図5に示されるように、改変処理(S81)の終了後、フィルタ41は、改変処理によって改変されたFixed PageをPDL(Page Description Language)形式の印刷データに変更する(S82)。PDL形式は、PCL(Printer Control Language)や、PCL/XLや、ESC/Pや、PDF(Portable Document Format)やXPSを含む。ステップS82の処理は、第1変更処理の一例である。
フィルタ41は、PDL変更処理(S82)によって生成した印刷データを出力し(S83)、最後のステージの処理を終了する。
以下、パイプラインの処理及び改変処理によるコマンドスタックの変化について、図9(B)に示された印刷設定を例に、図7及び図10を参照して詳しく説明する。
フィルタ41は、第1のステージが第1ページのFixed Pageを受け取ると、図10(A)に示されるように、第1ページにウォーターマークを追加するコマンドv1を第1ページのコマンドスタックにプッシュする。
次に、フィルタ41は、第2のステージが第1ページのFixed Pageを受け取ると、第1ページに対しては回転を行わないと判断する。すなわち、第1ページの第2のステージにおいては、コマンドは生成されない。
次に、フィルタ41は、第3のステージが第1ページのFixed Pageを受け取ると、第1ページに対しては拡縮を行わないと判断する。すなわち、第1ページの第3のステージにおいては、コマンドは生成されない。
次に、フィルタ41は、第4のステージが第1ページのFixed Pageを受け取ると、図10(A)に示されるように、コマンドm3、m4を生成し、第1ページのコマンドスタックにプッシュする。コマンドm3は、縮小のアフィン変換行列を示すコマンドである。当該アフィン変換行列は、図9(A)に示される第1ページのContentBoxを図9(C)に示されるContentBoxの大きさに縮小する行列である。コマンドm4は、平行移動のアフィン変換行列を示すコマンドである。当該アフィン変換行列は、図9(A)に示される第1ページのContentBoxを図9(C)に示されるContentBoxの位置に移動する行列である。
次に、フィルタ41は、図10(A)に示されるように、第2ページのビジュアル要素を第1ページに追加する追加コマンドp2を生成し、第1ページのコマンドスタックにプッシュする。
第1ページについて、第1のステージから第4のステージが実行されることにより、図10(B)に示されるように、第1ページのコマンドスタックに、コマンドv1、コマンドm3、コマンドm4、コマンドp2が順にプッシュされる。
一方、フィルタ41は、第1のステージが第2ページのFixed Pageを受け取ると、第2ページについてはウォーターマークを追加しないと判断する。すなわち、第2ページの第1のステージにおいては、コマンドは生成されない。
次に、フィルタ41は、第2のステージが第2ページのFixed Pageを受け取ると、コマンドm1及びコマンドm2を生成し、第2ページのコマンドスタックにプッシュする。コマンドm1は、図9(A)に示される第2ページのContentBoxを図9(C)に示されるContentBoxの向きに回転させる行列である。すなわち、コマンドm1は、90度回転のアフィン変換行列を示すコマンドである。
コマンドm2は、平行移動のアフィン変換行列を示すコマンドである。図8を参照して詳しく説明する。図8(A)は、画像の初期状態を示している。図8(B)は、ContentBoxのWidth(200)とHeight(287)とを入れ替えてContentBoxを90度回転させた状態を示している。図8(C)は、ビジュアル要素「B」を90度回転させた後の状態を示している。図8(C)に示されるように、ビジュアル要素「B」を90度回転させると、ビジュアル要素「B」とContentBoxとの相対位置がずれる。コマンドm2は、ビジュアル要素「B」を図8(D)に示される適正位置に、x軸方向に平行移動させるアフィン変換行列を示す。平行移動量は、印刷対象データが有するPage Width(210)である。
フィルタ41は、第3のステージが第2ページのFixed Pageデータを受け取ると、第2ページについては拡縮しないと判断する。すなわち、第2ページの第3のステージにおいては、コマンドは生成されない。
次に、フィルタ41は、第4のステージが第2ページのFixed Pageを受け取ると、図10(A)に示されるように、コマンドm5、m6を生成し、第1ページのコマンドスタックにプッシュする。コマンドm5は、縮小のアフィン変換行列を示すコマンドである。当該アフィン変換行列は、図9(A)に示される第2ページのContentBoxを図9(C)に示されるContentBoxの大きさに縮小する行列である。コマンドm6は、平行移動のアフィン変換行列を示すコマンドである。当該アフィン変換行列は、図9(A)に示される第2ページのContentBoxを図9(C)に示されるContentBoxの位置に移動する行列である。
第2ページについて、第1のステージから第4のステージが実行されることにより、図10(B)に示されるように、第2ページのコマンドスタックに、コマンドm1、コマンドm2、コマンドm5、コマンドm6が順にプッシュされる。
次に、改変処理おけるコマンドの解決について、図7及び図10を参照して説明する。フィルタ41は、図10(C)に示されるように、第1ページのコマンドスタックからコマンドp2をポップする(S101)。コマンドp2の解決に当たり、フィルタ41は、図10(C)及び図10(D)に示されるように、第2ページのコマンドスタックからコマンドm6、m5、m2、m1を順にポップして解決する。
詳しく説明すると、フィルタ41は、コマンドm6をポップし(S102)、ポップしたコマンドm6が示すアフィン変換行列M6を、第2ページの統合アフィン変換行列A2とする(S103)。具体的には、単位行列E(初期値)であった統合アフィン変換行列A2にアフィン変換行列M6を乗じて新たな統合アフィン変換行列A2(=M6)とする。次に、フィルタ41は、コマンドm5をポップし(S104)、ポップしたコマンドm5が示すアフィン変換行列M5を統合アフィン変換行列A2に乗じて新たな統合アフィン変換行列A2(=M6×M5)とする(S105)。次に、フィルタ41は、コマンドm2をポップし(S106)、ポップしたコマンドm2が示すアフィン変換行列M2を統合アフィン変換行列A2に乗じて新たな統合アフィン変換行列A2(=M6×M5×M2)とする(S107)。次に、フィルタ41は、コマンドm1をポップし(S108)、ポップしたコマンドm1が示すアフィン変換行列M1を統合アフィン変換行列A2に乗じて新たな統合アフィン変換行列A2(=M6×M5×M2×M1)とする(S109)。
次に、フィルタ41は、第2ページのコマンドスタックが空になったことにより、図10(D)に示されるように、統合アフィン変換行列A2に、第2ページの各ビジュアル要素がそれぞれ有する各アフィン変換行列を乗じる(S110)。フィルタ41は、乗じて得た各ビジュアル要素を示すコマンドp2’を、図10(E)に示されるように、第1ページのビジュアル要素スタックにプッシュする(S111)。
フィルタ41は、コマンドp2を解決した後、図10(F)及び図10(G)に示されるように、コマンドm4をポップして解決し、次いでコマンドm3をポップして解決する。詳しく説明すると、フィルタ41は、コマンドm4をポップし(S112)、コマンドm4が示すアフィン変換行列M4を第1ページの統合アフィン変換行列A1とする(S113)。具体的には、単位行列E(初期値)であった統合アフィン変換行列A1にアフィン変換行列M4を乗じて新たな統合アフィン変換行列A1(=M4)とする。次に、フィルタ41は、コマンドm3をポップし(S114)、コマンドm3が示すアフィン変換行列M3を第1ページの統合アフィン変換行列A1に乗じて新たな統合アフィン変換行列A1(=M4×M3)とする(S115)。
次に、フィルタ41は、図10(H)に示されるように、第1ページのコマンドスタックからコマンドv1をポップし(S116)、ポップしたコマンドv1を解決する。具体的には、フィルタ41は、図10(I)及び図10(J)に示されるように、第1ページの統合アフィン変換行列A1に、コマンドv1が示すビジュアル要素が有するアフィン変換行列を乗じ、乗じて得られた行列を示すコマンドv1’を、第1ページのビジュアル要素スタックにプッシュする(S117)。
フィルタ41は、第1ページのコマンドスタックが空になったことにより、第1ページのビジュアル要素スタックからコマンドv1’をポップし、コマンドv1’が示すビジュアル要素を第1ページのFixed Pageデータの末尾に追加する(S119)。
次に、フィルタ41は、第1ページのビジュアル要素スタックからコマンドp2’をポップし(S120)、ポップしたコマンドp2’が示すビジュアル要素を第1ページのFixed Pageデータの末尾に追加する(S121)。
アフィン変換行列M1、M2、M3、M4、M5、M6は、変換行列の一例である。統合アフィン変換行列A1、A2は、統合変換行列の一例である。アフィン変換行列M1、M2、M3、M4、M5、M6を示すコマンドは、第1コマンドの一例である。
[実施形態の効果]
上述の実施形態では、アフィン変換行列を乗じて統合アフィン変換行列を生成するから、各アフィン変換行列によってビジュアル要素をそれぞれ改変するよりも、PC10のCPU23の演算回数が低減する。その結果、印刷データの生成時間が短くなる。
また、受け付けた印刷対象データからPDL形式の印刷データを出力するまでの処理がフィルタ41のみで実行されるから、複数のフィルタで構成される従来のプリンタドライバに比べ、印刷データの生成時間が短くなる。詳しく説明すると、複数のフィルタ(DLL)で構成される従来のプインタドライバでは、一のフィルタから他のフィルタにデータを受け渡す際に、XPS形式やバイナリデータに変更する必要がある。そうすると、各フィルタにおいて、入力時及び出力時にデータの形式の変更を行う必要が生じる。また、各フィルタにおけるデータの入出力がストリーム入力及びストリーム出力であると、各フィルタにおいて、データの変更(シリアライス及びデシリアライズ)が必要になる。本実施形態では、受け付けた印刷対象データからPDL形式の印刷データを出力するまでの処理がフィルタ41のみで実行されるから、複数のフィルタで構成される従来のプリンタドライバに比べ、前述のデータの変更を行わない分だけCPU23の演算回数が低減する。その結果、印刷データの生成時間が短くなる。
なお、本実施形態では、フィルタ41のみによって、受け付けた印刷対象データからPDL形式の印刷データを出力するまでの処理が実行されるから、フィルタ41がストリーム入力によって印刷対象データを受け付けても(S13)、1回のデシリアライズだけで印刷データを出力することができる。
また、ビジュアル要素の改変を行う前に、ビジュアル要素よりもデータ量の小さなコンテントボックスの改変を行ってアフィン変換行列及びコマンドを生成するから、ビジュアル要素の改変に必要なコマンド及びアフィン変換行列をCPU23の少ない演算回数で生成することができる。その結果、印刷データの生成時間がさらに短くなる。
また、生成されたコマンドはコマンドスタックにプッシュされるから、順序を規定しつつコマンドを保存することができる。その結果、改変処理において、コマンドスタックからコマンドをポップし、コマンドが指示するアフィン変換行列を統合して統合アフィン変換行列を生成することができる。
また、ウォーターマークを追加する改変は、ビジュアル要素の改変とともに実行されるから、ウォーターマークを追加する改変を元のビジュアル要素の改変とは別に実行する場合に比べ、CPUの演算回数が低減する。その結果、印刷データの生成時間がさらに短くなる。
[変形例]
上述の実施形態では、フィルタ41のみを備えるプリンタドライバ32が説明された。本変形例では、図11(A)に示されるように、第1フィルタ61及び第2フィルタ62の2つのフィルタを備えるプリンタドライバ60が説明される。なお、実施形態と同一の構成には同一の符号が付されて説明が省略される。
プリンタドライバ60は、第1フィルタ61と、第2フィルタ62とを備える。第2フィルタ62は、いわゆるPDLコンバータである。第2フィルタ62には、例えば、既存のPDLコンバータが流用される。
第2フィルタ62は、図5に示される最後のステージの処理に代えて、図11(B)に示される最後のステージの処理を実行する。第1フィルタ61は、改変処理(S81)を実行した後、Fixed Pageを第2フィルタ62が受け取り可能な形式のデータに変更する変更処理を実行する(S120)。第2フィルタ62が受け取り可能な形式とは、XPS形式またはバイナリデータである。ステップS120の変更処理は、第2変更処理の一例である。その後、第1フィルタ61は、変更したFixed Pageを出力し(S121)、第2フィルタ62に受け渡す。なお、第1フィルタ61の出力は、ストリーム出力であってもよいし、XPS出力であってもよい。
第1フィルタ61で改変されたFixed Pageを受け取った第2フィルタ62は、PDL変更処理を実行し(S82)、PDL形式の印刷データを出力する(S83)。
本変形例では、既存のPDLコンバータを流用することができるから、第1フィルタ61のプログラミングが容易になる。
[損他の変形例]
上述の実施形態では、予め定められたパイプラインが構築される例が説明された。しかしながら、フィルタ41のステージマネージャは、プリントチケット(印刷設定)に応じたパイプラインを構築してもよい。具体的には、プリントチケットに、そのステージによるコマンド生成が必要となる設定がされているステージをパイプラインに追加する。例えば、図9(B)に示されるプリントチケットの場合、ステージマネージャは、図3に示される第1のステージ、第2のステージ、及び図4に示される第4のステージをパイプラインに追加する。また、ステージマネージャは、最後のステージが必ず最後に実行されるようにパイプラインを構築する。
印刷設定に応じてパイプラインが構築されるから、不要な処理が省かれる。その結果、印刷データの生成時間がさらに短くなる。
10・・・PC
23・・・CPU
31・・・OS
41・・・フィルタ
61・・・第1フィルタ
62・・・第2フィルタ

Claims (9)

  1. コンピュータを備えた情報処理装置によって実行されるプリンタドライバであって、
    前記コンピュータに、
    描画オブジェクトを示す第1オブジェクトデータと、編集指示データとを含むXPS形式の印刷対象データを前記情報処理装置にインストールされたOSから受け付ける受付処理と、
    前記編集指示データに応じた複数の第1コマンドを生成する生成処理と、
    前記第1コマンドによって前記第1オブジェクトデータを改変する改変処理と、を実行させ、
    前記第1コマンドは、前記第1オブジェクトデータに付与された行列を変換する変換行列をそれぞれ指示しており、
    前記改変処理は、複数の前記変換行列を乗じて統合変換行列を生成し、前記統合変換行列を前記第1オブジェクトデータに付与された行列に乗じるプリンタドライバ。
  2. 当該プリンタドライバは、前記受付処理、前記生成処理、及び前記改変処理を実行する第1フィルタを備える請求項1に記載のプリンタドライバ。
  3. 当該プリンタドライバは、前記改変処理で改変されたデータを所定の型式の印刷データに変更する第1変更処理をさらに実行する前記第1フィルタを備える請求項2に記載のプリンタドライバ。
  4. 当該プリンタドライバは、
    入力されたデータを所定の形式の印刷データに変更する第2フィルタと、
    前記改変処理で改変されたデータを前記第2フィルタが読み込み可能な型式のデータに変更する第2変更処理をさらに実行する前記第1フィルタと、を備える請求項2に記載のプリンタドライバ。
  5. 前記印刷対象データは、印刷可能範囲を示すコンテントボックスデータを含んでおり、
    前記生成処理は、前記編集指示データによって前記コンテントボックスデータを改変し、前記コンテントボックスデータの改変に基づいて前記第1コマンドを生成する処理である請求項1から4のいずれかに記載のプリンタドライバ。
  6. 前記生成処理は、
    前記コンテントボックスデータが示すコンテントボックスを回転させ、前記コンテントボックスの回転角度に応じた前記変換行列を生成する処理を実行するステージと、
    前記コンテントボックスを拡縮させ、前記コンテントボックスの拡縮率に応じた前記変換行列を生成する処理を実行するステージと、
    前記印刷対象データが示す複数のページを1ページにまとめ、前記複数のページの前記各コンテントボックスを1ページにまとめる改変に応じた変換行列を生成する処理を実行するステージと、を含み、
    一の前記ステージから他の一の前記ステージにデータが受け渡される請求項5に記載のプリンタドライバ。
  7. 前記生成処理は、生成した前記第1コマンドをコマンドスタックにプッシュする処理を含み、
    前記改変処理は、前記第1コマンドを前記コマンドスタックからポップし、ポップした前記第1コマンドが示す前記変換行列を乗算して統合する処理を含む請求項6に記載のプリンタドライバ。
  8. 前記生成処理は、
    第2オブジェクトデータを追加する前記編集指示データに応じた第2コマンドをさらに生成する処理と、
    生成した前記第2コマンドを前記コマンドスタックにプッシュする処理と、を含む請求項7に記載のプリンタドライバ。
  9. 前記受付処理は、ストリーム入力される前記印刷対象データを受け付ける請求項1から8のいずれかに記載のプリンタドライバ。
JP2017190403A 2017-09-29 2017-09-29 プリンタドライバ Active JP6874626B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2017190403A JP6874626B2 (ja) 2017-09-29 2017-09-29 プリンタドライバ
US16/022,991 US10445027B2 (en) 2017-09-29 2018-06-29 Non-transitory computer-readable medium storing instructions realizing graphical object processor, and method of controlling information processing device
CN201810789270.3A CN109582250B (zh) 2017-09-29 2018-07-18 存储实现打印机驱动的指令的非暂时性计算机可读介质和控制信息处理设备的方法
US16/556,359 US10860264B2 (en) 2017-09-29 2019-08-30 Non-transitory computer-readable medium storing instructions realizing graphical object processor, and method of controlling information processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017190403A JP6874626B2 (ja) 2017-09-29 2017-09-29 プリンタドライバ

Publications (2)

Publication Number Publication Date
JP2019067049A JP2019067049A (ja) 2019-04-25
JP6874626B2 true JP6874626B2 (ja) 2021-05-19

Family

ID=65896621

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017190403A Active JP6874626B2 (ja) 2017-09-29 2017-09-29 プリンタドライバ

Country Status (3)

Country Link
US (2) US10445027B2 (ja)
JP (1) JP6874626B2 (ja)
CN (1) CN109582250B (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6874626B2 (ja) * 2017-09-29 2021-05-19 ブラザー工業株式会社 プリンタドライバ

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835693A (en) * 1994-07-22 1998-11-10 Lynch; James D. Interactive system for simulation and display of multi-body systems in three dimensions
EP1433307A4 (en) * 2001-09-21 2007-05-02 Ricoh Kk THRESHOLD MATERIAL GENERATION PROCESS, PICTURE OUTPUT SYSTEM, STORAGE MEDIUM, GRADUATION REPRODUCTION METHOD, THRESHOLD MATRIX, PICTURE PROCESSING METHOD, IMAGE PROCESSING DEVICE, PICTURE GENERATOR, AND PRINTER DRIVER
JP4443838B2 (ja) * 2003-02-07 2010-03-31 キヤノン株式会社 色相別色調整処理回路及びその方法
US7417645B2 (en) * 2003-03-27 2008-08-26 Microsoft Corporation Markup language and object model for vector graphics
TWI312130B (en) * 2004-03-19 2009-07-11 Lite On Technology Corporatio Printer driving method for fast releasing control privilege
US7551322B2 (en) * 2004-06-29 2009-06-23 Intel Corporation Image edge filtering
JP4553364B2 (ja) * 2005-02-18 2010-09-29 キヤノン株式会社 印刷システム
JP2008160388A (ja) * 2006-12-22 2008-07-10 Canon Inc 情報処理装置、情報処理方法、及びコンピュータプログラム
JP4513888B2 (ja) * 2008-03-31 2010-07-28 ブラザー工業株式会社 画像生成装置および印刷装置
US9652820B2 (en) * 2008-12-18 2017-05-16 Xerox Corporation Method and system for utilizing transformation matrices to process rasterized image data
US9317225B2 (en) * 2011-05-25 2016-04-19 Xerox Corporation Method and apparatus for dynamically configuring a filter pipeline for a print driver
JP6150621B2 (ja) * 2013-06-07 2017-06-21 キヤノン株式会社 情報処理装置及びプログラム、制御方法
JP6303446B2 (ja) * 2013-11-29 2018-04-04 株式会社リコー 情報処理装置、プログラム、情報処理システム、及び情報処理方法
AU2013276977A1 (en) * 2013-12-24 2015-07-09 Canon Kabushiki Kaisha Asynchronous group processing using z-banding
JP2015225481A (ja) 2014-05-28 2015-12-14 キヤノン株式会社 印刷設定情報を効率良く編集するためのプログラム
JP6289276B2 (ja) * 2014-06-06 2018-03-07 キヤノン株式会社 情報処理装置およびプログラム、制御方法
US9501257B1 (en) * 2015-06-22 2016-11-22 Lexmark International, Inc. Pass-through printing with XPS printer driver
JP6857040B2 (ja) * 2017-01-31 2021-04-14 キヤノン株式会社 情報処理装置及びプログラム
JP6938204B2 (ja) * 2017-05-02 2021-09-22 キヤノン株式会社 情報処理装置、プログラム
JP6874626B2 (ja) * 2017-09-29 2021-05-19 ブラザー工業株式会社 プリンタドライバ

Also Published As

Publication number Publication date
US10445027B2 (en) 2019-10-15
US20190102118A1 (en) 2019-04-04
JP2019067049A (ja) 2019-04-25
CN109582250B (zh) 2022-03-22
CN109582250A (zh) 2019-04-05
US10860264B2 (en) 2020-12-08
US20190384541A1 (en) 2019-12-19

Similar Documents

Publication Publication Date Title
US10740049B2 (en) Printer and server
JP5920670B2 (ja) 画像形成装置及び印刷制御プログラム並びに印刷制御方法
EP3842917B1 (en) Control method and information processing apparatus
JP6844474B2 (ja) プリンタドライバ、および情報処理装置
US10795617B2 (en) Information processing apparatus and control method
JP2009116544A (ja) 印刷制御装置、印刷制御方法、及び、プログラム
US20130263279A1 (en) Information processing apparatus, storage medium, and control method therefor
JP6874626B2 (ja) プリンタドライバ
JP2007079819A (ja) 文書処理システム、文書処理システムの文書処理方法、プログラム、及び記憶媒体
US10310788B2 (en) Control method for generating data used for printing and information processing apparatus
JP2023020591A (ja) 情報処理装置、その制御方法及びプログラム
US10915278B2 (en) Information processing apparatus that provides print data to printer and control method therefor
JP2006259825A (ja) プリントシステム及びプログラム
JP5699604B2 (ja) 印刷プログラム、情報処理装置および記録媒体
US9430446B2 (en) Information processing apparatus, method and storage medium including a function for establishing exceptions applied to print settings when specified conditions are met
JP2010211439A (ja) 文字出力装置およびプログラム
JP2009269179A (ja) 印刷装置、プログラム及び記録媒体
JP2010122809A (ja) 情報処理装置、情報処理方法、プログラム、及び記憶媒体
US20240264782A1 (en) Information processing apparatus, method, and non-transitory computer-readable storage medium storing program
JP6007015B2 (ja) 画像形成装置及び画像形成プログラム
JP6186926B2 (ja) プログラムおよび情報処理装置
JP2016134045A (ja) 印刷制御装置
JP2006338166A (ja) 情報処理装置及びその制御方法、プログラム
JP6108106B2 (ja) 文書ファイルに対する情報埋め込み装置
JP2009003724A (ja) 印刷制御装置およびプリンタドライバのプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171019

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200616

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210317

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210323

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210405

R150 Certificate of patent or registration of utility model

Ref document number: 6874626

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150