(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024179791
(43)【公開日】2024-12-26
(54)【発明の名称】プリンタ
(51)【国際特許分類】
B41J 5/30 20060101AFI20241219BHJP
【FI】
B41J5/30 Z
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2023098927
(22)【出願日】2023-06-16
(71)【出願人】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110000291
【氏名又は名称】弁理士法人コスモス国際特許商標事務所
(72)【発明者】
【氏名】田伏 千加
【テーマコード(参考)】
2C187
【Fターム(参考)】
2C187AC06
2C187AC08
2C187BF02
2C187BF08
2C187BG03
2C187CC11
(57)【要約】
【課題】線形化PDFデータを印刷する場合の処理を改善するプリンタの技術を提供すること。
【解決手段】プリンタ1は、PDFデータに基づく印刷が可能であり、印刷対象のPDFデータが線形化PDFデータ50である場合に、印刷対象の線形化PDFデータ50に含まれる1ページ目のボディの記述内容に基づいて、1ページ目の印刷データを生成する。プリンタ1は、印刷対象の線形化PDFデータ50に増分更新がなされていない場合に、生成された1ページ目の印刷データに基づく印刷と、2ページ目以降の印刷データの生成および生成された2ページ目以降の印刷データに基づく印刷と、を行い、増分更新がなされている場合に、全ページ分の印刷データの生成および生成された全ページ分の印刷データに基づく印刷を行う。
【選択図】
図2
【特許請求の範囲】
【請求項1】
PDFデータに基づく印刷が可能なプリンタであって、
印刷対象のPDFデータが線形化PDFデータである場合に、
前記印刷対象の線形化PDFデータに含まれる1ページ目のボディの記述内容に基づいて、1ページ目の印刷データを生成し、
前記印刷対象の線形化PDFデータに増分更新がなされていない場合に、生成された前記1ページ目の印刷データに基づく印刷と、前記印刷対象の線形化PDFデータに含まれる2ページ目以降のボディの記述内容に基づく2ページ目以降の印刷データの生成および生成された前記2ページ目以降の印刷データに基づく印刷と、を行い、
前記印刷対象の線形化PDFデータに増分更新がなされている場合に、全ページ分の印刷データの生成および生成された前記全ページ分の印刷データに基づく印刷を行う、
ように構成されるプリンタ。
【請求項2】
請求項1に記載するプリンタにおいて、
前記印刷対象の線形化PDFデータに増分更新がなされていない場合に、
生成された前記1ページ目の印刷データに基づく印刷と、
前記印刷対象の線形化PDFデータに含まれる前記2ページ目以降のボディの記述内容に基づく前記2ページ目以降の印刷データの生成と、
が並行する、
ように構成されるプリンタ。
【請求項3】
請求項1に記載するプリンタにおいて、
前記印刷対象のPDFデータが線形化PDFデータである場合に、
前記印刷対象の線形化PDFデータの全体を取得する前に、前記印刷対象の線形化PDFデータから1ページ目の相互参照テーブルを取得し、取得された前記1ページ目の相互参照テーブルから前記印刷対象の線形化PDFデータに含まれる前記1ページ目のボディの記述内容を特定し、特定された1ページ目の記述内容に基づいて、前記1ページ目の印刷データを生成し、
前記印刷対象の線形化PDFデータに増分更新がなされていない場合、前記2ページ目以降の印刷データの生成については、前記印刷対象の線形化PDFデータの全体を取得した後、前記印刷対象の線形化PDFデータから2ページ目以降の相互参照テーブルを取得し、取得された前記2ページ目以降の相互参照テーブルから前記印刷対象の線形化PDFデータに含まれる前記2ページ目以降のボディの記述内容を特定し、特定された2ページ目以降の記述内容に基づいて、前記2ページ目以降の印刷データを生成する、
ように構成されるプリンタ。
【請求項4】
請求項1に記載するプリンタにおいて、
前記印刷対象のPDFデータが線形化PDFデータである場合に、
前記印刷対象の線形化PDFデータからデータサイズを示すサイズ情報を取得し、
前記印刷対象の線形化PDFデータの全体のデータサイズが、取得された前記サイズ情報に示されるデータサイズと一致する場合に、増分更新がなされていないとし、前記印刷対象の線形化PDFデータのデータサイズが、取得された前記サイズ情報に示されるデータサイズよりも大きい場合に、増分更新がなされているとする、
ように構成されるプリンタ。
【請求項5】
請求項4に記載するプリンタにおいて、
前記印刷対象のPDFデータが線形化PDFデータである場合に、
前記印刷対象の線形化PDFデータの全体を取得する前に、前記印刷対象の線形化PDFデータから前記サイズ情報を取得し、
前記印刷対象の線形化PDFデータの全体を取得した後に、前記印刷対象の線形化PDFデータの全体のデータサイズが、取得された前記サイズ情報に示されるデータサイズと一致する場合に、増分更新がなされていないとし、前記印刷対象の線形化PDFデータのデータサイズが、取得された前記サイズ情報に示されるデータサイズよりも大きい場合に、増分更新がなされているとする、
ように構成されるプリンタ。
【請求項6】
請求項4に記載するプリンタにおいて、
通信インタフェースを備え、外部デバイスから送信されたPDFデータを前記通信インタフェースを介して受信可能であり、
前記通信インタフェースを介して受信した前記印刷対象のPDFデータが線形化PDFデータである場合に、
前記通信インタフェースを介して受信される前記印刷対象の線形化PDFデータから前記サイズ情報を取得し、
前記通信インタフェースを介して受信した前記印刷対象の線形化PDFデータの全体のデータサイズが、取得された前記サイズ情報に示されるデータサイズと一致する場合に、増分更新がなされていないとし、前記通信インタフェースを介して受信した前記印刷対象の線形化PDFデータのデータサイズが、取得された前記サイズ情報に示されるデータサイズよりも大きい場合に、増分更新がなされているとする、
ように構成されるプリンタ。
【請求項7】
請求項4に記載するプリンタにおいて、
前記印刷対象のPDFデータが線形化PDFデータである場合に、
前記印刷対象の線形化PDFデータに含まれる線形化辞書に記述される前記サイズ情報を取得する、
ように構成されるプリンタ。
【請求項8】
請求項7に記載するプリンタにおいて、
前記印刷対象のPDFデータから前記線形化辞書の検出を試行し、前記線形化辞書を検出した場合に、前記印刷対象のPDFデータが線形化PDFデータであるとし、前記線形化辞書を検出しなかった場合に、前記印刷対象のPDFデータが線形化PDFデータでないとし、
前記印刷対象のPDFデータから前記線形化辞書が検出されて前記印刷対象のPDFデータが線形化PDFデータであるとした場合に、
前記印刷対象の線形化PDFデータに含まれる1ページ目のボディの記述内容に基づいて、前記1ページ目の印刷データを生成し、
前記印刷対象の線形化PDFデータから前記サイズ情報を取得し、
前記印刷対象の線形化PDFデータの全体のデータサイズが、取得された前記サイズ情報に示されるデータサイズと一致する場合に、増分更新がなされていないとし、前記印刷対象の線形化PDFデータのデータサイズが、取得された前記サイズ情報に示されるデータサイズよりも大きい場合に、増分更新がなされているとし、
前記印刷対象の線形化PDFデータに増分更新がなされていない場合に、生成された前記1ページ目の印刷データに基づく印刷と、前記印刷対象の線形化PDFデータに含まれる前記2ページ目以降のボディの記述内容に基づく前記2ページ目以降の印刷データの生成および生成された前記2ページ目以降の印刷データに基づく印刷と、を行い、
前記印刷対象の線形化PDFデータに増分更新がなされている場合に、全ページ分の印刷データの生成および生成された前記全ページ分の印刷データに基づく印刷を行い、
前記印刷対象のPDFデータから前記線形化辞書が検出されずに線形化PDFデータでないとした場合に、全ページ分の印刷データの生成および生成された前記全ページ分の印刷データに基づく印刷を行う、
ように構成されるプリンタ。
【請求項9】
請求項1に記載するプリンタにおいて、
前記印刷対象の線形化PDFデータに増分更新がなされている場合に、
前記印刷対象のPDFデータの1ページ目の記述内容に対する増分更新があれば、全ページ分の印刷データの生成および生成された前記全ページ分の印刷データに基づく印刷を行い、
前記印刷対象のPDFデータの1ページ目の記述内容に対する増分更新がなければ、生成された前記1ページ目の印刷データに基づく印刷と、前記印刷対象の線形化PDFデータに含まれる前記2ページ目以降のボディの記述内容に基づく2ページ目以降の印刷データの生成および生成された前記2ページ目以降の印刷データに基づく印刷と、を行う、
ように構成されるプリンタ。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書に開示される技術分野は、線形化PDFデータに基づく印刷が可能なプリンタに関する。
【背景技術】
【0002】
従来、文書ファイルのデータ形式として、PDF(Portable Document Format)が知られている。PDFデータでは、文書の内容が記述されるボディにアクセスするための参照テーブルがデータの後方に配置される。そのため、PDFデータを印刷する場合、プリンタは、全データの受信を待ってから1ページ目の処理を開始することになる。
【0003】
また、前述した通常のPDFデータと異なる構造のPDFデータとして、1ページ目のボディにアクセスするための参照テーブルがデータの先方に配置された線形化PDF(リニアライズドPDF)データも知られている。線形化PDFデータを印刷する場合、プリンタは、全データの受信を待つことなく、1ページ目の処理を開始できる。線形化PDFデータの処理に関する技術を開示した文献としては、例えば特許文献1がある。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
PDFデータは、文書の内容を変更して保存する方法として、データの初期状態を維持したまま、データの最後に変更内容を追加して保存する、増分更新(Incremental Update)が可能であり、前述した線形化PDFデータであっても、増分更新が可能である。そのため、増分更新された線形化PDFデータを印刷する場合、1ページ目の処理を全データを受信する前から開始すると、変更内容が処理に反映されない可能性がある。引用文献1に開示されている技術であっても、PDFデータの増分更新については開示されておらず、改善の余地がある。
【課題を解決するための手段】
【0006】
この課題の解決を目的としてなされたプリンタは、PDFデータに基づく印刷が可能なプリンタであって、印刷対象のPDFデータが線形化PDFデータである場合に、前記印刷対象の線形化PDFデータに含まれる1ページ目のボディの記述内容に基づいて、1ページ目の印刷データを生成し、前記印刷対象の線形化PDFデータに増分更新がなされていない場合に、生成された前記1ページ目の印刷データに基づく印刷と、前記印刷対象の線形化PDFデータに含まれる2ページ目以降のボディの記述内容に基づく2ページ目以降の印刷データの生成および生成された前記2ページ目以降の印刷データに基づく印刷と、を行い、前記印刷対象の線形化PDFデータに増分更新がなされている場合に、全ページ分の印刷データの生成および生成された前記全ページ分の印刷データに基づく印刷を行う、ように構成される。
【0007】
本明細書に開示されるプリンタは、印刷対象のPDFデータが線形化PDFデータである場合に、1ページ目の印刷データの生成を開始し、さらにその線形化PDFデータに増分更新がなされていなければ、その生成された1ページ目の印刷データに基づく印刷を行う。一方、その線形化PDFデータに増分更新がなされていれば、全ページ分の印刷データを生成して、その全ページ分の印刷データに基づく印刷を行う。従って、増分更新がなされていなければ、1ページ目の印刷を早期に完了できる一方、増分更新がなされていれば、増分更新の変更内容が反映された印刷データを生成できる。これにより、増分更新の有無に応じて適切な印刷が行われる。
【0008】
上記プリンタの機能を実現するための制御方法、コンピュータプログラム、および当該コンピュータプログラムを格納するコンピュータにて読取可能な記憶媒体も、新規で有用である。
【発明の効果】
【0009】
本明細書に開示される技術によれば、線形化PDFデータを印刷する場合の処理を改善するプリンタの技術が実現される。
【図面の簡単な説明】
【0010】
【
図1】実施の形態にかかるプリンタの概略構成図である。
【
図2】印刷処理の手順を示すフローチャートである。
【
図3】PDFデータの構成の例を示す説明図である。
【
図4】増分更新がなされたPDFデータの構成の例を示す説明図である。
【
図5】各処理のタイミングの例を示す説明図である。
【
図6】印刷処理の手順を示すフローチャートである。
【
図7】印刷処理の手順を示すフローチャートである。
【発明を実施するための形態】
【0011】
以下、プリンタを具体化した実施の形態について、添付図面を参照しつつ詳細に説明する。本形態は、PDFデータに基づく印刷を実行可能なプリンタを開示するものである。
【0012】
本形態のプリンタ1は、
図1に示すように、CPU11と、メモリ12と、を含むコントローラ10を備えている。また、プリンタ1は、操作パネル13と、通信インタフェース(以下、「通信IF」とする)14と、印刷エンジン15と、を備え、これらがコントローラ10に電気的に接続されている。
【0013】
CPU11は、メモリ12から読み出したプログラムに従って、また、ユーザの操作に基づいて、各種の処理を実行する。なお、
図1中のコントローラ10は、プリンタ1の制御に利用されるハードウェアやソフトウェアを纏めた総称であって、実際にプリンタ1に存在する単一のハードウェアを表すとは限らない。
【0014】
本形態のプリンタ1のメモリ12には、オペレーティングシステム(以下「OS」とする)21と、印刷プログラム22と、を含む各種のプログラムや各種のデータが記憶されている。印刷プログラム22は、OS21と協働して、プリンタ1に印刷のための動作を行わせるプログラムである。印刷プログラム22は、全体が1つのプログラムであっても良いし、協働して処理を実行する複数のプログラムの組み合わせであっても良い。各プログラムやデータについての詳細は、後述する。メモリ12は、各種の処理が実行される際の作業領域としても利用される。
【0015】
なお、メモリ12の一例は、プリンタ1に内蔵されるROM、RAM、HDD等に限らず、CPU11が読み取り可能かつ書き込み可能なストレージ媒体であってもよい。例えば、通信IF14を介してプリンタ1に接続されているUSBメモリ、HDD等の外部メモリや、通信IF14を介してプリンタ1に接続されている装置に備えられるメモリやHDDも、メモリ12の一例である。CPU11が備えるバッファも、メモリ12の一例である。
【0016】
なお、コンピュータが読み取り可能なストレージ媒体とは、non-transitoryな媒体である。non-transitoryな媒体には、上記の例の他に、CD-ROM、DVD-ROM等の記憶媒体も含まれる。また、non-transitoryな媒体は、tangibleな媒体でもある。一方、インターネット上のサーバなどからダウンロードされるプログラムを搬送する電気信号は、コンピュータが読み取り可能な媒体の一種であるコンピュータが読み取り可能な信号媒体であるが、non-transitoryなコンピュータが読み取り可能なストレージ媒体には含まれない。
【0017】
操作パネル13は、ユーザに情報を報知するための画面を表示するハードウェアと、ユーザによる操作を受け付けるハードウェアと、を含む。操作パネル13は、報知機能と操作受け付け機能とを有するタッチパネルを含んでいても良い。操作パネル13は、表示ランプ、各種のボタンやテンキーを含んでいても良い。
【0018】
通信IF14は、パーソナルコンピュータ(以下、「PC」とする)3等の外部デバイスと通信を行うためのハードウェアを含む。通信IF14の通信規格は、イーサネット(登録商標)、Wi-Fi(登録商標)、USBなどである。プリンタ1は、複数の通信規格に対応する複数の通信IF14を備えていてもよい。
【0019】
印刷エンジン15は、シート等の印刷媒体に画像データに基づく画像を印刷する構成を含む。印刷エンジン15の印刷方式は、例えば、電子写真方式、インクジェット方式である。印刷エンジン15は、カラー印刷が可能な構成であっても良いし、単色印刷を行う構成であっても良い。
【0020】
続いて、プリンタ1による印刷動作について、フローチャートを参照して説明する。なお、以下の処理は、基本的に、プログラムに記述された命令に従ったCPU11の処理を示す。すなわち、以下の説明における「判断」、「抽出」、「選択」、「算出」、「決定」、「特定」、「取得」、「受付」、「制御」等の処理は、CPU11の処理を表している。CPU11による処理は、OSのAPIを用いたハードウェア制御も含む。本明細書では、OSの記載を省略して各プログラムの動作を説明する。すなわち、以下の説明において、「プログラムBがハードウェアCを制御する」という趣旨の記載は、「プログラムBがOSのAPIを用いてハードウェアCを制御する」ことを指してもよい。また、プログラムに記述された命令に従ったCPU11の処理を、省略した文言で記載することがある。例えば、「CPUが行う」のように記載することがある。また、プログラムに記述された命令に従ったCPU11の処理を、「プログラムAが行う」のようにCPUを省略した文言で記載することがある。
【0021】
なお、「取得」は要求を必須とはしない概念で用いる。すなわち、CPU11が要求することなくデータを受信するという処理も、「CPUがデータを取得する」という概念に含まれる。また、本明細書中の「データ」とは、コンピュータに読取可能なビット列で表される。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。本明細書中の「情報」についても同様である。また、「要求する」、「指示する」とは、要求していることを示す情報や、指示していることを示す情報を相手に出力することを示す概念である。また、要求していることを示す情報や指示していることを示す情報のことを、単に、「要求」、「指示」とも記載する。
【0022】
また、CPU11による、情報Aは事柄Bであることを示しているか否かを判断する処理を、「情報Aから、事柄Bであるか否かを判断する」のように概念的に記載することがある。CPU11による、情報Aが事柄Bであることを示しているか、事柄Cであることを示しているか、を判断する処理を、「情報Aから、事柄Bであるか事柄Cであるかを判断する」のように概念的に記載することがある。
【0023】
プリンタ1にて実行される印刷処理の手順について、
図2のフローチャートを参照して説明する。この印刷処理は、PDFデータに基づく印刷の実行指示を受け付けたことを契機に、印刷プログラム22に基づいて、プリンタ1のCPU11にて実行される。プリンタ1は、PC3等の外部デバイスから送信されたPDFデータを、通信IF14を介して受信可能である。プリンタ1は、PDFデータを受信することで、印刷対象の画像データとして取得し、印刷を実行可能である。
【0024】
また、プリンタ1は、操作パネル13を介して、メモリ12に記憶している画像データに基づく印刷の実行指示、または、不図示のメモリ用IFに接続されたメモリ、例えば、USBメモリ、に記憶されている画像データに基づく印刷の実行指示、を受け付け可能であっても良い。その場合、プリンタ1は、メモリ12やUSBメモリから印刷対象の画像データを読み出す。プリンタ1は、読み出したPDFデータを、印刷対象の画像データとして取得し、印刷を実行可能である。なお、プリンタ1は、PDFデータ以外の画像データを印刷対象とする印刷も実行可能であるが、本明細書では、PDFデータに基づく印刷の実行指示を受け付けた場合の処理について、説明する。
【0025】
CPU11は、取得中の印刷対象のPDFデータに線形化辞書が有るか否かを判断する(S111)。線形化辞書は、線形化PDFデータに含まれ、線形化PDFデータではないPDFデータには含まれない。以下では、線形化PDFデータではないPDFデータを、「通常PDFデータ」とする。
【0026】
線形化PDFデータは、1ページ目の表示や印刷のための情報が、他のページの情報とは別にファイルの先頭部分に集めて配置されているPDFデータである。線形化PDFデータと通常PDFデータとは、例えば、
図3に示すように、そのデータ構成が異なる。なお、これらの図では、説明に関係のない部分を省略して示している。
【0027】
通常PDFデータ40は、例えば、
図3(A)に示すように、ヘッダ41と、ボディ42と、相互参照テーブル43と、トレーラ辞書44と、を含む。そして、これらが、ヘッダ41→ボディ42→相互参照テーブル43→トレーラ辞書44の順に配置されている。ボディ42には、全てのページのオブジェクトの情報が含まれる。また、相互参照テーブル43は、ボディ42の記述内容を特定するための情報である。
【0028】
通常PDFデータ40に基づいて印刷を実行する場合、CPU11は、相互参照テーブル43に基づいてボディ42をランダムアクセスすることで、各ページの記述内容を特定できる。そのため、CPU11は、少なくともボディ42と相互参照テーブル43とを取得した後でなければ、印刷データの生成を開始できない。
【0029】
線形化PDFデータ50は、例えば、
図3(B)に示すように、ヘッダ51と、線形化辞書52と、1ページ目の相互参照テーブル53と、1ページ目のボディ54と、残りのページのボディ55と、残りのページの相互参照テーブル56と、トレーラ辞書57と、を含む。そして、これらが、ヘッダ51→線形化辞書52→1ページ目の相互参照テーブル53→1ページ目のボディ54→残りのページのボディ55→残りのページの相互参照テーブル56→トレーラ辞書57の順に配置される。なお、「1ページ目」とは、最初に印刷するページの意味であり、例えば、印刷対象がドキュメントであっても、その第1ページとは限らない。
【0030】
線形化PDFデータ50は、例えば、複数ページの画像を含むWebページの表示指示を受け付けた場合に、少なくとも最初のページを短時間で表示可能にするための構成である。線形化辞書52は、このPDFデータが線形化PDFデータ50であることを示す情報であり、例えば、この線形化PDFデータ50のデータサイズを示す情報や、線形化PDFデータ50に含まれる各データ構成の位置を示す情報が含まれる。
【0031】
線形化PDFデータ50の1ページ目の相互参照テーブル53は、1ページ目のボディ54の記述内容を特定するための情報である。また、1ページ目のボディ54には、1ページ目に含まれるオブジェクトの情報が含まれる。CPU11は、印刷対象のPDFデータが線形化PDFデータ50であれば、1ページ目の相互参照テーブル53に基づいて、1ページ目のボディ54をランダムアクセスすることにより、1ページ目の印刷データの生成を開始できる。つまり、残りのページのボディ55以降のデータを取得する前であっても、CPU11は、1ページ目の印刷データの生成を開始できる。
【0032】
残りのページのボディ55には、1ページ目以外の各ページに含まれるオブジェクトの情報が含まれる。また、残りのページの相互参照テーブル56は、残りのページのボディ55の記述内容を特定するための情報である。CPU11は、残りのページの相互参照テーブル56に基づいて、残りのページのボディ55をランダムアクセスすることにより、1ページ目以外の各ページの印刷データを生成できる。
【0033】
図3(B)に示すように、線形化PDFデータ50には、ヘッダ51に続くデータの先頭近くの位置に、線形化辞書52が含まれる。印刷処理のS111では、CPU11は、例えば、通信IF14を介して受信することで取得している印刷対象のPDFデータについて、その先頭から所定量のデータを解析し、線形化辞書52の検出を試行する。そして、CPU11は、その所定量のデータから線形化辞書52を検出しなかった場合、取得中のPDFデータには線形化辞書52が含まれないと判断する。線形化辞書52が無いと判断した場合(S111:NO)、CPU11は、印刷対象のPDFデータは、線形化PDFデータ50ではなく、通常PDFデータ40であると判断する。
【0034】
印刷対象のPDFデータが通常PDFデータ40であると判断した場合、CPU11は、その通常PDFデータ40の全体を取得し(S112)、その後に各ページの印刷データを生成して(S113)、印刷エンジン15に印刷を実行させる(S114)。取得した通常PDFデータ40の全体に基づく印刷を終了したら、CPU11は、印刷処理を終了する。印刷対象のPDFデータが通常PDFデータ40である場合、CPU11は、前述したように、通常PDFデータ40の全体を取得した後に、印刷データの生成を開始する。
【0035】
一方、その所定量のPDFデータから線形化辞書52を検出した場合、つまり、線形化辞書52が有ると判断した場合(S111:YES)、CPU11は、印刷対象のPDFデータは線形化PDFデータ50であると判断する。そこで、CPU11は、線形化辞書52に含まれる情報である辞書データサイズを取得して(S121)、取得した辞書データサイズをメモリ12に保存する。辞書データサイズは、サイズ情報の一例である。
【0036】
辞書データサイズは、この線形化PDFデータ50のデータサイズを示す情報であって、線形化PDFデータ50をファイルとして保存する際に、線形化辞書52に書き込まれる。なお、PDFデータのデータサイズは、PDFデータを含むファイルのファイルサイズでもある。つまり、辞書データサイズは、線形化PDFデータ50のファイルサイズと言うこともできる。
【0037】
そして、CPU11は、1ページ目の印刷データを生成するために必要なすべての情報を取得するまで、PDFデータの取得を継続する。具体的には、CPU11は、少なくとも、1ページ目の相互参照テーブル53と1ページ目のボディ54までを取得する(S122)。そして、CPU11は、取得したデータに基づいて、1ページ目の印刷データの生成を開始する(S123)。つまり、CPU11は、印刷対象の線形化PDFデータ50の全体を取得する前に、1ページ目の印刷データの生成を開始する。従って、1ページ目の印刷を早期に開始できる可能性が高い。
【0038】
なお、CPU11は、1ページ目の印刷データを生成する処理としてS123にて開始する処理では、パースやレンダリングを含むRIP処理のみでなく、印刷エンジン15の駆動を開始する前に行う全ての処理を実行する。例えば、色調整等の後処理が必要である場合には、その後処理も、S123から開始される処理に含まれる。
【0039】
CPU11は、1ページ目の印刷データを生成する処理と並行して、線形化PDFデータ50の残りのデータを継続して取得する。そして、CPU11は、印刷対象の線形化PDFデータ50の全体を取得したか否かを判断する(S131)。取得し終わっていないと判断した場合(S131:NO)、CPU11は、さらに継続して線形化PDFデータ50を取得する。なお、CPU11は、印刷対象の線形化PDFデータ50の全体を取得し終わるまでは、S123にて開始した処理、すなわち、1ページ目の印刷データの生成が終了しても、印刷エンジン15に印刷を開始させない。
【0040】
印刷対象の線形化PDFデータ50の全体を取得したと判断した場合(S131:YES)、CPU11は、実データサイズを取得する(S132)。実データサイズは、実際に取得した線形化PDFデータ50の全体のデータサイズである。そして、取得した実データサイズが、S121にて取得した辞書データサイズと一致するか否かを判断する(S141)。
【0041】
実データサイズが辞書データサイズと一致していると判断した場合(S141:YES)、CPU11は、S123にて開始した処理にて生成された1ページ目の印刷データに基づいて、印刷エンジン15に印刷の実行を指示する(S142)。これにより、印刷エンジン15によって、1ページ目の印刷が開始される。
【0042】
さらに、CPU11は、S131にて取得した残りのページのボディ55と残りのページの相互参照テーブル56とに基づいて、残りのページの印刷データの生成を開始する(S143)。なお、CPU11は、S142によって開始される1ページ目の印刷と並行して、S143の処理を実行する。増分更新がなされていない場合には、印刷対象の線形化PDFデータ50の全体を取得する前にS123にて作成を開始した印刷データに基づいて、1ページ目の印刷が早期に開始される。さらに、1ページ目の印刷データに基づく印刷と、2ページ目以降の印刷データの生成と、が並行することで、2ページ目以降の印刷データの生成が早期に開始される。
【0043】
一方、実データサイズが辞書データサイズと一致していないと判断した場合(S141:NO)、CPU11は、取得した線形化PDFデータ50の全体に基づいて、1ページ目から印刷データを生成する(S113)。例えば、実データサイズが辞書データサイズよりも大きい場合、その印刷対象の線形化PDFデータ50には、増分更新がなされている可能性が高い。
【0044】
通常PDFデータ40や線形化PDFデータ50には、増分更新がなされる場合がある。例えば、生成済みの通常PDFデータ40や線形化PDFデータ50に対して、編集および上書き保存の指示を受け付けた場合、そのデータに増分更新がなされる。増分更新がなされると、例えば、
図4に示すように、更新前の通常PDFデータ40や線形化PDFデータ50の後端に更新に関する情報である更新情報60が付加される。更新情報60以外の部分は、
図3(A)に示した通常PDFデータ40や、
図3(B)に示した線形化PDFデータ50のままである。
【0045】
更新情報60には、例えば、更新前の通常PDFデータ40や線形化PDFデータ50に追加される画像の情報とその画像の配置を示す情報とが含まれる。更新情報60には、1ページ目に関する情報が含まれる可能性がある。そのため、線形化PDFデータ50に対して増分更新がなされた場合、1ページ目の相互参照テーブル53と1ページ目のボディ54とを用いてS123にて作成を開始した印刷データは、更新後の適切な画像の印刷データではない可能性がある。なお、線形化PDFデータ50に更新情報60が付加された構成のデータは、
図3(B)に示す線形化PDFデータの構成とは異なる構成のデータであるとも言えるが、本明細書では、「増分更新がなされている線形化PDFデータ50」と記載する。
【0046】
増分更新がなされている線形化PDFデータ50であっても、更新前の線形化PDFデータ50に含まれる各データは変更されていない。つまり、S121にて取得した辞書データサイズは、
図3(B)に示した線形化PDFデータ50の線形化辞書52に含まれる情報であって、増分更新がなされる前の線形化PDFデータ50のデータサイズである。一方、S132にて取得した実データサイズは、実際に取得したPDFデータの全体のデータサイズであり、印刷対象のPDFデータが増分更新がなされている線形化PDFデータ50であれば、更新情報60を含むPDFデータのデータサイズである。
【0047】
実データサイズと辞書データサイズとが一致している場合、その線形化PDFデータ50に更新情報60は追加されていない。つまり、印刷対象の線形化PDFデータ50には、増分更新がなされていない。従って、S123にて作成を開始した印刷データは、1ページ目の印刷のための正しい印刷データである。
【0048】
一方、実データサイズが辞書データサイズよりも大きい場合、印刷対象のPDFデータは、更新情報60が追加されている。つまり、印刷対象のPDFデータは、増分更新がなされている線形化PDFデータ50である。そして、S123にて生成を開始した印刷データは、更新情報60を含まない線形化PDFデータ50に基づく印刷データであって、更新情報60に1ページ目の情報が含まれる場合であっても、その更新情報60は反映されていない。従って、1ページ目に関する情報が更新情報60に含まれる場合、つまり、線形化PDFデータ50の1ページ目に対して増分更新がなされている場合、S123にて生成を開始した印刷データに基づいて印刷を実行すると、増分更新がなされている線形化PDFデータ50に基づく適切な画像が印刷されない可能性がある。
【0049】
そこで、CPU11は、印刷対象のPDFデータが増分更新がなされている線形化PDFデータ50であると判断した場合、1ページ目の印刷データを生成し直す。具体的には、CPU11は、実データサイズが辞書データサイズと一致していないと判断した場合、S123にて作成を開始した印刷データに基づく印刷を行わず、S113に進んで、取得したPDFデータの全体に基づいて、1ページ目から印刷データを生成する。
【0050】
そして、CPU11は、S113またはS143にて生成された印刷データに基づいて、印刷エンジン15に印刷を実行させる(S114)。取得したPDFデータの全体に基づく印刷を終了したら、CPU11は、印刷処理を終了する。
【0051】
次に、外部デバイスから送信されるPDFデータを通信IF14を介して受信することで取得して、そのPDFデータに基づく印刷を実行する場合における、プリンタ1による各処理のタイミングについて、
図5のタイミングチャートを参照して説明する。なお、
図5のチャート中の数字は、印刷対象のページを示す。
図5では、取得したPDFデータが線形化PDFデータ50である場合について説明する。
【0052】
プリンタ1は、T1にて、PDFデータの取得を開始する。プリンタ1は、取得済みの部分を順次解析することで、そのPDFデータが線形化PDFデータ50であると判断したら、1ページ目の相互参照テーブル53(
図3(B)参照)とボディ54とに基づいて、T2にて、1ページ目の印刷データの生成を開始する。この時に生成される1ページ目の印刷データを、「1A」とする。ただし、プリンタ1は、1Aの生成が完了しても、全てのデータの取得が終了するまでは、印刷を開始しない。
【0053】
そして、プリンタ1は、PDFデータの全体を取得したら、T3にて、例えば、データサイズに基づいて、増分更新がなされているか否かを判断する。増分更新がなされていない場合、
図5の上段に示すように、プリンタ1は、生成済みの1ページ目の印刷データ(1A)を用いて、T3にて、1ページ目の印刷を開始する。さらに、プリンタ1は、1Aの印刷と並行して、2ページ目以降の印刷データの生成を開始する。プリンタ1は、2ページ目の印刷データの生成が終了し、1Aの印刷が終了したら、2ページ目の印刷を開始する。
【0054】
一方、増分更新がなされている場合、
図5の下段に示すように、プリンタ1は、生成済みの印刷データ(1A)に基づく印刷を実行しない。プリンタ1は、取得したPDFデータの全体を利用して、T3にて、1ページ目から印刷データを生成する。この時に生成される1ページ目の印刷データを、「1B」とする。なお、更新情報60に1ページ目に関する情報が含まれていれば、1Bは、1Aとは異なるデータである。更新情報60に1ページ目に関する情報が含まれていなければ、1Bは、1Aと同じデータである。
【0055】
そして、プリンタ1は、1Bの生成が終了したら、T4にて、1Bの印刷を開始する。また、プリンタ1は、1Bの印刷と並行して、2ページ目以降の印刷データを生成する。プリンタ1は、2ページ目の印刷データの生成が終了し、1Bの印刷が終了したら、2ページ目の印刷を開始する。
【0056】
従って、増分更新がなされていない場合には、プリンタ1は、PDFデータの全体を取得した後に印刷データを生成する場合に比較して、早期に印刷を開始できる。一方、増分更新がなされている場合には、プリンタ1は、増分更新が適用された正しい画像(1B)を印刷できる。
【0057】
次に、印刷処理の変形例について、
図6のフローチャートを参照して説明する。この印刷処理は、増分更新がなされていると判断した場合の処理が、
図2に示した印刷処理とは異なる。
図2の印刷処理と同じ手順については、同じ符号を付し、説明を省略する。
【0058】
図6の印刷処理では、実データサイズが辞書データサイズと一致していないと判断した場合(S141:NO)、CPU11は、更新情報60(
図4参照)を解析し、1ページ目の記述内容に対する増分更新が有るか否かを判断する(S201)。そして、1ページ目の記述内容に対する増分更新が有ると判断した場合(S201:YES)、CPU11は、S113に進んで、1ページ目から印刷データを生成する。
【0059】
一方、1ページ目の記述内容に対する増分更新が無いと判断した場合(S201:NO)、CPU11は、S123からの処理にて生成済みの印刷データ(例えば、
図5の1A)に基づいて、1ページ目の印刷を印刷エンジン15に開始させる(S142)。1ページ目の記述内容に対する増分更新が無い場合、1ページ目の印刷データを再度生成したとしても、生成済みの印刷データと同じデータが生成される。従って、1ページ目の記述内容に対する増分更新が無い場合に、先行して作成した印刷データを用いて印刷を開始することで、印刷を早期に開始できる可能性が高まる。
【0060】
さらに、CPU11は、1ページ目の印刷と並行して、残りのページの印刷データの生成を開始する(S143)。なお、残りのページの印刷データの生成時には、CPU11は、更新情報60(
図4参照)を含むPDFデータである、増分更新がなされている線形化PDFデータ50の全体に基づいて、印刷データを生成する。従って、残りのページについては、増分更新がなされている線形化PDFデータ50に基づく適切な画像が印刷される。
【0061】
次に、印刷処理のさらに他の変形例について、
図7のフローチャートを参照して説明する。この印刷処理は、PC3等の外部デバイスから受信することでPDFデータを取得し、その印刷の実行指示を受け付けた場合の処理であって、増分更新がなされているか否かを判断するための処理が、
図2の印刷処理とは異なる。
図2の印刷処理と同じ手順については、同じ符号を付し、説明を省略する。
【0062】
印刷対象のPDFデータが線形化PDFデータ50であると判断し(S111にてYES)、S123にて1ページ目の印刷データの生成を開始した後、CPU11は、その時点までに取得済みのPDFデータのデータサイズを取得する(S301)。そして、取得したデータサイズが、S121にて取得した辞書データサイズよりも大きいか否かを判断する(S302)。
【0063】
取得済みのデータサイズが、辞書データサイズよりも大きいと判断した場合(S302:YES)、CPU11は、S123にて開始した印刷データの生成処理を中止する(S303)。さらに、CPU11は、増分更新がなされていると決定する(S304)。CPU11は、例えば、増分更新がなされていることを示すフラグをメモリ12に記憶しても良い。
【0064】
S304の後、または、取得済みのデータサイズが、辞書データサイズよりも大きくないと判断した場合(S302:NO)、CPU11は、PDFデータの全体を取得したか否かを判断する(S131)。PDFデータの全体を取得していないと判断した場合(S131:NO)、CPU11は、継続してデータを取得する。
【0065】
なお、CPU11は、S302にて、一旦、取得済みのデータサイズが辞書データサイズよりも大きいと判断した後は、S301~S304の処理を行わず、PDFデータの全体を取得するまで継続してデータを取得する。一方、S302にて、取得済みのデータサイズが辞書データサイズよりも大きくないと判断した場合、CPU11は、例えば、所定量のデータを取得するたびにS301とS302とを行う。
【0066】
PDFデータの全体を取得したら(S131:YES)、CPU11は、S304にて、増分更新がなされていると決定したか否かを判断する(S305)。CPU11は、例えば、増分更新がなされていることを示すフラグがメモリ12に記憶されている場合に、増分更新がなされていると判断しても良い。そして、増分更新がなされていると決定した場合(S305:YES)、CPU11は、S113に進んで、全てのページの印刷データを生成する。増分更新がなされていると決定していない場合(S305:NO)、CPU11は、S142に進んで、印刷エンジン15に1ページ目の印刷を開始させる。
【0067】
このようにしても、プリンタ1は、PDFデータの全体を取得して、取得済みのデータサイズが辞書データサイズよりも大きくないと判断した場合には、増分更新がなされていないと判断できる。一方、取得済みのデータサイズが、辞書データサイズよりも大きくなったと判断した場合には、増分更新がなされていると判断できることから、印刷データの生成を中止することで、利用されないデータを生成する手順を省略できる。
【0068】
なお、外部デバイスからのデータ取得ではなく、メモリ12に記憶しているPDFデータに基づく印刷の実行指示、または、USBメモリに記憶されているPDFデータに基づく印刷の実行指示を受け付けた場合には、CPU11は、例えば、ファイルシステムを介して、実データサイズを取得できる場合がある。この場合、CPU11は、印刷処理の開始前にまず、実データサイズを取得しておき、S121にて取得した辞書データサイズと比較すると良い。さらに、実データサイズが辞書データサイズと一致していないと判断した場合、CPU11は、S123をスキップして、PDFデータの全体を取得した後に印刷データの生成を開始すると良い。
【0069】
以上、詳細に説明したように、本形態のプリンタ1では、印刷対象のPDFデータが線形化PDFデータ50である場合に、1ページ目の印刷データの生成を開始し、さらにその線形化PDFデータ50に増分更新がなされていなければ、その1ページ目の印刷データを用いた印刷を行う。一方、その線形化PDFデータ50に増分更新がなされていれば、増分更新がなされていると判断した後に全ページ分の印刷データの生成を行う。従って、増分更新がなされていなければ、1ページ目の印刷を早期に完了できる一方、増分更新がなされていれば、増分更新の変更内容が反映された印刷データを生成できる。これにより、増分更新の有無に応じて適切な印刷が行われる。
【0070】
なお、本形態は単なる例示にすぎず、本発明を何ら限定するものではない。従って、本発明は当然に、その要旨を逸脱しない範囲内で種々の改良、変形が可能である。例えば、プリンタ1は、印刷専用機にかぎらず、複合機、複写機、FAX装置等であっても良い。また、プリンタ1の印刷方式は、熱転写方式、感熱方式等であっても良い。また、プリンタ1に印刷対象のPDFデータを送信する外部デバイスは、PC3に限らず、例えば、スマートフォン、タブレットコンピュータであっても良い。
【0071】
また、実施の形態では、実データサイズが辞書データサイズと一致していない場合には、PDFデータの全体に基づいて印刷データを生成するとしたが、これに限らない。例えば、実データサイズが辞書データサイズよりも小さい場合、そのPDFデータが壊れている可能性が高いことから、プリンタ1は、エラーを報知するとしても良いし、印刷を継続するか否かをユーザに問い合わせるとしても良い。
【0072】
また、例えば、増分更新がなされているか否かの判断は、データサイズによるものに限らない。プリンタ1は、取得したPDFデータを解析することで判断しても良いし、ファイル名に増分更新がなされていることを示す情報が含まれる場合に増分更新がなされていると判断しても良い。
【0073】
また、例えば、増分更新がなされていると判断した場合、プリンタ1は、作成を開始した1ページ目の印刷データを削除しても良いし、上書き可能な記憶領域として開放しても良い。
【0074】
また、実施の形態に開示されている任意のフローチャートにおいて、任意の複数のステップにおける複数の処理は、処理内容に矛盾が生じない範囲で、任意に実行順序を変更できる、または並列に実行できる。
【0075】
また、実施の形態に開示されている処理は、単一のCPU、複数のCPU、ASICなどのハードウェア、またはそれらの組合せで実行されてもよい。また、実施の形態に開示されている処理は、その処理を実行するためのプログラムを記録した記録媒体、または方法等の種々の態様で実現することができる。
【符号の説明】
【0076】
1 プリンタ
14 通信IF