`
`(12) United States Patent
`Chiarabini et al.
`
`(10) Patent No.:
`(45) Date of Patent:
`
`US 7,324.228 B2
`Jan. 29, 2008
`
`(54) SYSTEM AND METHOD FOR
`DOWNLOADING AND FOR PRINTING DATA
`FROM AN EXTERNAL CONTENT SOURCE
`
`(75) Inventors: Luca Chiarabini, San Diego, CA (US);
`Xavier Boix, Sant Cugat-BCN (ES);
`Mark E. Boettcher, Vancouver, WA
`(US); Michael D. Whitmarsh,
`Vancouver, WA (US)
`s
`(73) Assignee: Hewlett-Packard Development
`Company, L.P., Houston, TX (US)
`
`EP
`EP
`EP
`EP
`GB
`
`5,727,137 A * 3/1998 LeClair et al. ............. 358/1, 17
`6,009,153 A * 12/1999 Houghton et al. ..... 379/102.02
`-
`(Continued)
`FOREIGN PATENT DOCUMENTS
`
`0 704 792
`! 1995
`() 733 965
`9/1996
`0 795 817
`9/1997
`() 9 11 723
`4/1999
`2 325 997
`12/1998
`OTHER PUBLICATIONS
`
`sk
`
`* * * *
`
`-
`
`-
`
`-
`
`-
`
`B. Noghani et al., “Reducing Latency on the Internet using “Com
`
`(*) Notice: º to sº º º jº º: ponent-Based Download” and “File-Segment Transfer Protocol”:
`patent 1s extended or adjusted under
`Experimental Result”, Proceedings of the Jul. 2000 Symposium on
`U.S.C. 154(b) by 943 days.
`Performance Evaluation of Computer and Telecommunication Sys
`t
`.#
`(21) Appl. No.: 09/935,579
`ems
`
`22) Filed:
`(22) File
`(65)
`
`Aug. 24. 2001
`ug. 24,
`Prior Publication Data
`|US 2002/003919.6 A1
`Apr. 4, 2002
`
`Related U.S. Application Data
`(63) Continuation-in-part of application No. 09/513,441,
`filed on Feb. 25, 2000, now abandoned.
`Foreign Application Priority Data
`(30)
`Aug. 25, 2000 (GB) ................................. 002106.3.3
`
`(51) Int. Cl.
`(2006.01)
`G06F 3/12
`(2006.01)
`G06F H 5/()()
`(52) U.S. Cl. ..................................... 358/1.15, 358/1.13
`(58) Field of Classification Search ............... 358/1 .15,
`358/402, 1.13, 1.16, 1.17, 1.18, 1.14, 1.1;
`. -
`705/9: 718/1, 100. 709/200
`-
`See application file for complete search history.
`References Cited
`
`(56)
`
`|U.S. PATENT DOCUMENTS
`5,438,436 A *
`8/1995 Harris ........................ 358/500
`
`(Continued)
`Primary Examiner—Dov Popovici
`(57)
`ABSTRACT
`
`A system and method are provided for enabling faster
`downloading and printing of data received from an external
`content source. In one embodiment, the method is segment
`ing the data file available on a content source external to the
`user computing device into a plurality of portions; indepen
`dently downloading to said computing device each of said
`plurality of portions; and assembling each downloaded
`portion into a second data file on said computing device, to
`mach such first data file. In a second embodiment the
`method is (a) selecting a first data file to be printed from said
`plurality of data files; (b) downloading said selected data file
`form a content source external to a computing device
`connected to the printer, (c) once said selected data file is
`entirely downloaded into said computing device, processing
`said selected data file and sending the processed data to the
`printer for printing; and (d) during said steps of processing
`and sending, selecting the following data file from said
`plurality of data files and repeating steps (b) (c) and (d) for
`said selected data file.
`
`13 Claims, 6 Drawing Sheets
`
`
`
`
`
`Microsoft Corp. Exhibit 1006
`
`
`
`US 7,324.228 B2
`Page 2
`
`|U.S. PATENT DOCUMENTS
`6,025,923 A * 2/2000 Kageyama et al. ........ 358/1.14
`6,031,624 A * 2/2000 Murphy ..................... 358/1.17
`6,238,105 B1* 5/2001 Pardo ........................ 358/1.17
`6,313,921 B1* 11/2001 Kadowaki .................. 358/1.15
`6,392,758 B2 *
`5/2002 Hines ......................... 358/1.9
`6,426,799 B1* 7/2002 Okimoto et al. ........... 358/1.15
`6,691,166 B1* 2/2004 Gasior et al. ............... 709/232
`6,775,705 B2 * 8/2004 Maeda ....................... 709/230
`
`6,982,801 B1* 1/2006 Saito ......................... 358/1.15
`OTHER PUBLICATIONS
`Tachibana Hiroaki; Patent Abstracts of Japan—JP 110127276; Nov.
`21, 2000.
`Chuck Forsberg; “Evolution and Selection of File Transfer Proto
`cols”: http://www.omen.com/zmdmev.html; 7 pages.
`Search Report for Corresponding Great Britain Application No. GB
`0021063.3.
`* cited by examiner
`
`Microsoft Corp. Exhibit 1006
`
`
`
`U.S. Patent
`
`Jan. 29, 2008
`
`Sheet 1 of 6
`
`
`
`324,228 B2 US 7,
`
`aut?u
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`? 914
`
`Microsoft Corp. Exhibit 1006
`
`
`
`U.S. Patent
`
`Jan. 29, 2008
`
`Sheet 2 of 6
`
`US 7,324.228 B2
`
`
`
`UPLOADING
`LOGIC
`182
`
`4
`
`| ETORY
`159
`
`PROCESSOR º
`
`156
`
`NETWORK
`?NTERFACE
`166
`
`165
`SERVER
`106
`
`
`
`
`
`
`
`
`
`
`
`NETWORK
`109
`
`
`
`
`
`NETWORK
`INTERFACE
`123
`
`PROCESSOR
`113
`
`
`
`SYSTEM
`100
`
`OUTPUT
`| INTERFACE(s)
`126
`
`FIG. 2
`
`
`
`
`
`BROWSER
`143
`
`
`
`|
`
`
`
`
`
`
`
`PLUG - IN
`147
`UPLOADING
`LOGIC
`180
`only?s. DOWNLOADING
`*
`?,CGIC
`181
`PRINTING
`LOGIC
`L49
`
`
`
`
`
`i.
`
`INPUT
`INTERFACE(S)
`129
`L
`|
`
`Microsoft Corp. Exhibit 1006
`
`
`
`U.S. Patent
`
`Jan. 29, 2008
`
`Sheet 3 of 6
`
`US 7,324.228 B2
`
`
`
`BEGIN RECEIVING
`DATA STREAT From T 200
`CoNTENT source
`
`GATHER FIRST
`Portion OF DATA T-202
`FROM STREAM:
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`STORE FIRST
`PORTION IN
`'IE TORY
`
`GATHER SECOND
`PORTION OF DATA
`FROM STREAT
`
`STORE SECOND
`PORTION IN
`TEMORY
`
`
`
`
`
`
`
`. REQEIVER .N.
`i?
`DESTROY STREAM
`covyAND
`
`GATHER NEXT
`PORTION OF DATA
`FROM STREAT
`
`STORE NEXT
`PORTION IN
`MEMORY
`
`FIG.3
`
`206
`
`SEND FIRST PORTION
`TO PRINTER TO
`3BG|N PRINTHNG
`
`
`
`
`
`TITIEOUT º |FIRST PORTION
`
`FINISHED
`YES
`SEND SECOND
`PORTION
`TO PRINTER
`
`214
`
`
`
`230
`| TIMEouTT
`TIMEOUT
`
`
`
`PRINTING OF
`PREVIOUS PORTION
`FINISHED
`YES
`SEND NEXT
`PORTION
`TO PRINTER
`
`
`
`228
`
`
`
`
`
`Microsoft Corp. Exhibit 1006
`
`
`
`U.S. Patent
`
`Jan. 29, 2008
`
`Sheet 4 of 6
`
`US 7,324.228 B2
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`START
`
`PING
`CONTENT
`SOURCE
`
`2 4 0
`
`
`
`CALCULATE
`~242
`dATA TRANSFER
`SPEED
`
`
`
`DATA
`TRANSFER
`SPEEP > A
`
`YES
`
`DATA
`TRANSFER
`SPEEP > B
`
`
`
`246
`
`SET BLOCK
`SIZE = W
`
`SET BLOCK
`SIZE = X,
`WHERE X > W
`
`SET BLOCK
`SIZE = Y,
`WHERE Y > X
`
`252
`
`FIG.l.
`
`Microsoft Corp. Exhibit 1006
`
`
`
`U.S. Patent
`
`Jan. 29, 2008
`
`Sheet 5 of 6
`
`US 7,324.228 B2
`
`FIG. 5
`
`2TS 500
`START
``-- ~~
`
`Af
`
`-
`
`
`
`587
`
`GET BYTES
`FROM POS Y1
`TO POS Y2
`
`YES
`
`585
`( TIME OUT
`
`NO
`
`YES
`
`
`
`
`
`OBTAIN SIZE
`ORIGINATING | 510
`
`FHLE
`
`CREATE OUTPUT s
`FILE
`20
`
`GET BYTES
`FROM POS Y1
`TO POS Y2
`
`530
`
`540
`
`555
`--~ *
`
`END ) A \
`550
`|S Y1 > sº
`ORIGINATING
`FILE
`7
`A
`
`YES
`
`NO
`
`/ GET STILL
`DOWNLOADING
`
`580
`
`
`
`STORE
`BYTES FROM
`POS Y4 TO Y2
`IN OUTPUT
`FILE
`
`590
`
`
`
`
`
`NO
`
`IS SPEED >= 20
`|CBS OR NO
`CONCURRENT
`THREAD
`
`IS No.
`PARALLEL
`THREAD >= Z.
`
`YES
`
`Microsoft Corp. Exhibit 1006
`
`
`
`U.S. Patent
`
`Jan.29,2008
`
`Sheet6 0f6
`
`US 7,324,228 B2
`
`Aunanu
`
`-avnO
`
`ucov
`
`lune-alu-Councurlno-OOu..0000.o0.oalo-nau.-cult-n.-oncuh-Inn-o-ounc~toutoocl..I-cuocuovI-O'O-noIntact-00.nov00Ibo
`
`.99...on...v:-onucnI-oo.uto.onnoon-vu-a...so...two...o00......-con-000‘.cl...In;-oonaca:cc...aID.oIInto-luto..cocou-Iuccoon
`
`no.9...out.I‘oonoono.0-fiasco-c.Don-Io...anon-on..-uni-Ooolnon-Q-o'cOIacoal-0......aQ0lqclcnonoon-0.0.-Ito-0-IOI0000'001'III
`
`oncouqlvlto.Can’t-OIOOICIanI-I-oocac-luau-accus-uln-.Qo.¢Qo-nn-noon-.Uoootttutoocouo'u:-nonnatntooooao-Ilonocc
`
`o-I:o.0......-.ooouncnonoogacon-00:.cuounvo-cno...a:0.sou.cunt-non...-volunCIn-co-nono¢000-ococooucOI-l-occa-nncoco
`
`II
`
`
`
`wEu5InbilllllrununJl.mIb-in...uo‘lnuICQQoOOCiloos-c~1u~¢0§.I'-to...out.0.0.3.0...II-ool-ol-oocn-pnncucco-DOnuo.cud-JWQIo-iostouul-o
`
`ocacoooonO-ocou.cunt-acc-onu.oQCI.ctuhonII¢.toco0.-u9~'.I-.Du-ncoccvocuaco-o-OCIQOoOcc-no.no...guano-Il-oociaouodrou
`
`O
`
`d.l$’..l....‘l...|fl..l.l0'...II‘IIU..0..C.Q......'C.II'.‘.‘C.......'.IC'IC...'I.‘I....I.O..ll.....IIUCOO'CICII.."...I....I....II
`
`ItIIMgamma—mafia.35:5eE.
`
`Microsoft Corp. Exhibit 1006
`
`Microsoft Corp. Exhibit 1006
`
`
`
`
`US 7,324.228 B2
`
`1
`SYSTEM AND METHOD FOR
`DOWNLOADING AND FOR PRINTING DATA
`FROM AN EXTERNAL CONTENT SOURCE
`
`CROSS REFERENCE TO RELATED
`APPLICATION(S)
`This is a continuation in part application of application
`number Ser. No. 09/513,441 filed on Feb. 25, 2000 now
`abandoned which is hereby incorporated by reference
`herein.
`This application also claims foreign priority benefits
`under 35 U.S.C. § 119 of Great Britain application GB
`0021063.3 filed Aug. 25, 2000, which is herein incorporated
`by reference.
`
`10
`
`15
`
`TECHNICAL FIELD
`
`The present invention relates generally to downloading
`data from an external content source and, more particularly,
`to methods and systems that enable faster and more reliable
`downloading of data received from an external content
`SOUIrce.
`
`BACKGROUND
`
`20
`
`25
`
`In any Internet application download/upload of large data
`files has always been a major problem. There are several
`weird problems related to transfer of data through Internet
`protocols (IP) such as HTTP or FTP. Most of these problems
`are related to frequent error conditions that may occur
`during any long download/upload process. Errors like a
`broken transmission, lost connection, stalled transfer and so
`on are very common problems for large data file transfers.
`An example of a typical internet service where these
`problems become even worst is Print On Demand Services
`since very large data files (i.e. more than 10 Mb) are
`exchanged over the Internet.
`A Print On Demand (POD) Service generally allows a
`customer to buy printed reproductions of certain data files,
`which can be available on particular web sites or on the
`customer’s own computer. Such data files, once selected by
`the customer, are transferred, preferably via Internet, to a
`print service facility/provider for their reproduction, and
`often via a modem. For example Mediaflex.com (http://
`www.mediafiex.com) offers an Internet accessible printing
`service using a standard web site.
`Conventional print service providers (PSPs) comprise one
`or a plurality of printers in a singles physical location, e.g.
`a print shop or a print room, which provide to a customer a
`printing service for posters, brochures, leaflets, copies of
`photographs and the like. Typically a print service provider
`may comprise one or more large format printers capable of
`printing to large format size media, i.e. a HP Design.Jet
`printer.
`Printing speed is an important feature for printers of all
`types, in particular for printers at print service facilities. In
`a POD environment if a customer desires to buy a bitmap
`image that fills an 8%x11 inches page at 300 dots-per-inch
`(dpi) in 24 bit colour, this uncompressed image file would be
`over 22 Mb in size. Even compressing the file using JPEG
`compression would still leave a file several MB in size.
`Then, such file is download from the server where it is stored
`to the print service provider for its printing. With a modem
`operating at 56.6 Kb/s, this download would take several
`minutes, If working at full speed and not experiencing any
`of the above error cited conditions. During this time the
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`printer sits idle as it waits to receive data and it will not start
`receiving data, i.e. printing. Clearly if the downloading
`process, for any of the above reasons, fails, the time the
`printers stay idle get bigger and bigger causing frustration
`and damages (printers not printing the required job) to the
`PSP’s Owner.
`However not only the downloading time has accrued
`problems, but also the rest of the traditional sequential
`printing process, which causes the growth of the total print
`time for each print to further unacceptable levels in particu
`lar for a PSP, which is trying to maximise the amount of time
`during which each printer is actually printing.
`With reference to FIG. 1, traditionally printing of a raster
`data has been based on a sequence of the following tasks:
`“download”, “load”, “process”, print”, “I/O’’. For instance a
`4 Mb JPEG (or TIFF, PhotoCD or the like) compressed
`raster file has been traditionally printed by:
`downloading: take 4 Mb of compressed raster data from
`the internet;
`loading: decompress 4 Mb data into 50 Mb memory data;
`processing: apply image processing to 50 Mb memory
`data;
`printing: send 50 Mb memory data through the print
`driver, eventually till the print spooler; and
`I/O: send 4 Mb-100 Mb (compressed/uncompressed) data
`through the I/O, till the printer, which eventually starts
`printing.
`According to FIG. 1, a PSP, by printing several images,
`has to repeat for each of these such sequence of tasks, which
`means that long period s of “printing process” time are
`always required. Then, there is a need, in particular for a
`PSP for methods and systems which can increase the
`number of prints that can be produced by each printer,
`optimising such printing process.
`Applicant realises that most of the above stated problems,
`occurring while downloading/uploading files from/to a
`server to/from a client computing device, are not likely to
`appear when small files (generally less than 1 Mb) are
`transferred.
`
`SUMMARY OF THE INVENTION
`
`According to a first aspect of the present invention there
`is provided a method to download a first data file to a
`computing device, comprising the steps of segmenting the
`data file available on a content source external to the user
`computing device into a plurality of portions; independently
`downloading to said computing device each of said plurality
`of portions; and assembling each downloaded portion into a
`second data file on said computing device, to mach such first
`data file.
`This means that only small sized “files” (portions) are
`download/uploaded via the telecommunication network, and
`that in the few occurrences of a failed transmission, only
`small sized files will be re-transmitted. This also means that
`even if the amount of time required for the downloading of
`a given time is not reduced in case of a “good connection”,
`it makes the total downloading time less dependent on the
`quality of the connection. In fact a bad connection may
`cause substantial increases of the downloading time due to
`the frequent need of retransmission of the same data.
`In addition, reducing the occurrence of transmission inter
`ruption it reduces the risk to not receive any error message
`advising that the downloading ha been interrupted for any
`reason, generating the dangerous believe that the download
`ended correctly and the file is complete. For instance it may
`happen if the computing device is protected by a fire wall.
`
`Microsoft Corp. Exhibit 1006
`
`
`
`3
`Preferably, the size of each portion is smaller than or
`equal to 1 Mb.
`The split of the full size of the data file to a number of
`portions having a smaller size allows to enjoy a transmission
`through a more reliable connection for the entire data file. In
`fact, experiments run by the Applicant showed that a good
`connection (above 15 Kb/s or more preferably 20 Kb/s) over
`the Internet can be guaranteed for few minutes (4 to 10 min)
`only (this corresponding to transmission of 1 Mb or below
`of data), then may experience degradation or other prob
`lems.
`More preferably, at least two portions of said plurality of
`portions have the same size.
`In preferred embodiment, the method comprises a step of
`creating said second data file in the computing device having
`size equal to the size of said first data file.
`The creation of the empty file is twofold: firstly it ensures
`before starting the download that there is enough space in,
`the memory store the data file; secondarily, it allows to
`employ a simpler method to re-assembly the independently
`downloaded portions of the original data file.
`Typically, said step of independently downloading com
`prises the step of downloading X bytes of said first data file
`starting from byte Y of said first data file and storing the
`downloaded X bytes into said second data file form byte Y
`25
`of said second data file.
`In a further preferred embodiment, the method comprises
`the step of downloading at least two of said plurality of
`portions by simultaneous threads. Preferably, 4 or more
`portions are downloaded by simultaneous threads
`30
`This allows to achieve the bigger reduction in the down
`loading time.
`More preferably, a further simultaneous thread is
`launched for independently downloading a further portion of
`said plurality of portions if a data transfer speed for any of
`35
`the current active thread(s) is bigger than or equal to Kb/s or
`more preferably bigger than 20 Kb/s.
`In this way, the method it is optimising the capacity of the
`line, i.e. a new concurrent thread, which may further reduce
`the downloading time, is not launched if is going to fill up
`the connection. This may cause a reduction of the speed time
`of some or all of the currently active threads, then eventually
`provoking an increase in the total downloading time.
`According to a second aspect of the present invention
`there is provided a method of printing a plurality of data files
`on a printer comprising the steps of (a) selecting a first data
`file to be printed from said plurality of data files; (b)
`downloading said selected data file from a content source
`external to a computing device connected to the printer, (c)
`once said selected data file is entirely downloaded into said
`computing device, processing said selected data file and
`sending the processed data to the printer for printing; and (d)
`during said steps of processing and sending, selecting the
`following data file from said plurality of data files and
`repeating steps (b) (c) and (d) for said selected data
`This allows the system to continuously download, load,
`process, print and transmit raster data without overheating
`the system and minimising the bottleneck. Although the total
`print time of each image is not improved at all (if previous
`embodiment(s) achieving the improved downloading are not
`included in this embodiment) the overall printing system
`delivers an optimal in/out throughput ratio.
`According to a third aspect of the present invention there
`is provided a method printing a plurality of data files on a
`printing device, comprising a computing unit and a printing
`unit, said method comprising the steps of (a) selecting a first
`data file to be printed from said plurality of data files; (b)
`
`4
`downloading said selected data file, by means of said
`computing unit, from a content source external to said
`printing device; (c) once said selected data file is entirely
`downloaded into said printing device, processing said
`selected data file and passing the processed data to the
`printing unit for printing; and (d) during said steps of
`processing and passing, selecting the following data file
`from said plurality of data files and repeating steps (b) (c)
`and (d) for said selected data file.
`According to a fourth aspect of the present invention there
`is provided a computer program product comprising com
`puter program means adapted to perform the method of
`downloading and/or printing a plurality of data files on a
`computing device or printing device when said program is
`run on the computing device or the printing device.
`According to a fifth aspect of the present invention there
`is provided a system comprising means adapted for carrying
`out all the steps of the method of downloading and/or
`printing a plurality of data files on a computing device or
`printing device.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`The invention can be better understood with reference to
`the following drawings. The components in the drawings are
`not necessarily to scale, emphasis instead being placed upon
`clearly illustrating the principles of the present invention.
`Moreover, in the drawings, like reference numerals desig
`nate corresponding parts throughout the several views.
`FIG. 1 illustrates steps performed by a conventional print
`service provider;
`FIG. 2 is a block diagram of a system for printing a data
`file on a printer according to one embodiment of the present
`invention;
`FIG. 3 is a flow chart of one embodiment of a method for
`printing a data file on a printer executed in the system of
`FIG. 2;
`FIG. 4 is a flow chart showing the steps for setting the
`block size of data based on the connection speed between the
`content source and the user’s system;
`FIG. 5 is a flow chart of one embodiment of a method for
`downloading a data file on a printer executed in the system
`of FIG. 2;
`FIG. 6 is a block diagram showing the downloading time
`when the method of FIG. 5 is applied; and
`FIG. 7 is a block diagram showing the full printing time
`achieved by a method of printing a plurality of data files on
`a printer executed in the system of FIG. 2.
`
`DETAILED DESCRIPTION OF THE
`INVENTION
`
`There will now be described by way of example the best
`mode contemplated by the inventors for carrying out the
`invention. In the following description of numerous specific
`details are set forth in order to provide a through under
`standing of the present invention. It will be apparent how
`ever, to one skilled in the art, that the present invention may
`be practiced without limitation to these specific details. In
`other instances, well known methods and structures have not
`been described in detail so as not to unnecessarily obscure
`the present invention.
`Whilst the following description applies to a plurality of
`computing devices and printing devices, including, small
`and large format printers, facsimiles, all-in-one devices or
`the like, communicating over the internet it will be under
`stood by the person skilled in the art, that in general such
`
`US 7,324.228 B2
`
`5
`
`10
`
`15
`
`20
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`Microsoft Corp. Exhibit 1006
`
`
`
`5
`devices may communicate over any communications net
`work, including virtual private networks (VPN’s), local area
`networks (LAN’s), mobile telecommunications networks or
`the like.
`In this specification, the term ‘communication network’
`includes any communications network over which a plural
`ity of computer entities can communicate with each other by
`transfer of electronic data files. Such networks include both
`packet switched and circuit switched networks, and hybrids
`of packed switched/circuit switched networks. Examples of
`such networks include the Internet, wide area networks
`(WAN’s). Various protocols such as internet protocol (IP);
`asynchronous transfer mode (ATM); wireless application
`protocol (WAP) and the like may be used.
`With reference to FIG. 2, a block diagram of a system 100
`for printing a data file on a printer according to one embodi
`ment of the present invention is shown. The system 100 may
`comprise, for example, a computer system as shown or a
`dedicated logical circuit that replaces the principle compo
`ments of the computer system, which can be integrated into
`a printing device. In the preferred embodiment, the system
`100 includes a processor 113 and a memory 116, both of
`which are electrically coupled to a local interface 119. The
`local interface 119 may comprise, for example, a data bus
`with an accompanying control bus as is known by those
`skilled in the computer art. The local interface 119 provides
`a conduit for the transfer of data between the various
`components attached thereto.
`The system 100 of FIG. 2 is shown in context with a
`server 106 and a network 109. The system 100 also com
`30
`prises a network interface 123 that electrically couples a
`network 109 to the local interface 119. The network inter
`face 123 makes data obtained from the server 106 via the
`network 109 available on the local interface 119. The
`network interface 123 may include, for example, a modem
`35
`or an appropriate network card that may be employed to
`transmit and receive data across the communications net
`work 109.
`The system 100 also includes one or more output inter
`faces 126 and one or more input interfaces 129. The output
`interfaces 126 electrically couple one or more output devices
`to the local interface 119. Examples of such output devices
`include a printer 128, a display device 133 and other output
`devices such as speakers, etc. The output interfaces 126 may
`include, for example, an interface card or other similar
`45
`device. Likewise, the input interfaces 129 electrically couple
`one or more input devices to the local interface 119 as
`shown. The input devices may include, for example, a
`keyboard 136 or a mouse 139. The memory 116 may
`comprise any one of or a combination of a number of
`memory devices, including both volatile and nonvolatile
`memory components. Volatile components are those that do
`not retain data values upon loss of power. Conversely,
`nonvolatile components retain data upon a loss of power.
`These volatile and nonvolatile components may include, for
`example, random access memory (RAM), read-only
`memory (ROM), hard disk drives, floppy disk drives, com
`pact disk drives, tape drives, and other memory components.
`A browser 143 and one or more drivers 145 for commu
`nicating with the output devices are stored on the memory
`60
`116. Upon execution by the processor 113, the logic of the
`browser 143 generates a browser graphical user interface
`that appears on the display device 133. The browser 143 may
`be employed to display various web pages that are down
`loaded to the system 100 via the network 109 as known in
`the art. Also stored on the memory 116 is a plug-in 147 that
`includes printing logic 149 for controlling the system 100 to
`
`50
`
`40
`
`55
`
`65
`
`US 7,324.228 B2
`
`5
`
`10
`
`15
`
`20
`
`25
`
`6
`print a data file on a printer in accordance with the present
`invention. Plug-in 147 further includes an upload logic 180
`and a download logic 181 for respectively uploading a data
`from the system memory system 116 to the server 106 or
`downloading data from the server to the system memory
`116. As explained in more detail below, in a first embodi
`ment the printing logic 149 gathers data received from a
`remote content source and sends portions of the data to the
`printer 128 via the driver 145.
`With continued reference to FIG. 2, the server 106 may
`include a processor 156 and a memory 159, both of which
`are electrically coupled to a local interface 163. The local
`interface 163 may comprise, for example, a data bus with an
`accompanying control bus as known in the art. The server
`106 also includes a network interface 166 that electrically
`couples the telecommunication network 109 to the local
`interface 163, thereby allowing data available from the
`network 109 to be manipulated by the processor 156 and
`stored in the memory 159. Also, data from the memory 159
`may be transmitted to a remote location on the network 109,
`such as the system 100, via the network interface 166. For
`example, a data file 169 stored on the memory 159 may be
`downloaded from the server 106 to the system 100 via the
`network 109 and ultimately displayed on the display device
`133, stored in memory 116 for future usage, or printed on the
`printer 128.
`The system 100 may receive a data file from a remote
`content source, such as the server 106, and begin printing the
`data from the file before the entire data file is received. In
`this manner, the actual printing of the data file begins soon
`after the print request from the user and is much less
`dependent upon the modem speed, network traffic and other
`factors.
`However, in a number of case it is still necessary to wait
`till the data 169 is entirely downloaded before starting any
`printing activity.
`This is true for example if the data file is:
`A PDF file, since all the multipage information are stored
`at the end of the file, thus it is necessary to receive the entire
`file before the printing logic is capable of the information for
`each page;
`A BMP or TIFF files, since the information are stored in
`the other way around, i.e. first the data to be printed last and
`last the data to be printed first. Then, it is necessary to wait
`that the downloading is ended to get the data which are
`going to be printed first and so starting the printing process;
`Or
`Any file comprising special actions to be performed or
`effects to be applied on the data image before printing which
`require completion of the download process to perform the
`action (or apply the effect) e.g. rotating the image for
`printing, for instance to optimise the media usage or for
`fitting with the media size.
`In the following with reference to FIG. 3, a preferred
`embodiment of the system and method of the present
`invention which will try to address the above problem will
`be described.
`As shown in FIG. 2, the remote content source may
`comprise the server 106 and the data file may be a full-page
`image file 169 residing in the memory 159 of the server. A
`user operating the computer system 100 may view on the
`display device 133 a web page 146 served from server 106.
`The web page 146 may include a thumbnail version 149 of
`the full-page image file 169. If the user desires to print the
`complete image file 169, the user may select the thumbnail
`version 149 and execute a print request.
`
`Microsoft Corp. Exhibit 1006
`
`
`
`7
`Turning now to FIG. 3, a flow chart of one embodiment
`of the system and method of the present invention is
`illustrated. Beginning with block 200, when the print request
`is executed the printing logic 149 controls the system 100 to
`begin receiving the image file 169 from the server 106 in the
`form of a data stream through the browser 143. In block 202
`the printing logic 149 gathers a first portion of data 40' from
`the stream and stores the first portion in a temporary storage
`segment 40 of the memory 116 (block 204). The printing
`logic 149 then progresses to block 206 and sends the first
`portion of data 40' to the printer 128 via the driver 145. Upon
`receiving the first portion of data 40', the printer 128 begins
`printing. Meanwhile, in block 208 the printing logic 149
`gathers a second portion of data 40" from the stream and
`stores the second portion in the memory 116 (block 210). It
`will be appreciated that the step of gathering a second
`portion of data 40" (block 208) may be performed concur
`rently with the step of sending the first portion of data 40' to
`the printer (block 206) or may be started while the first
`portion of data 40' is still printing. Additionally, this step and
`the other steps described herein are performed in the back
`ground such that the user is unaware that data is being
`continuously received.
`After storing the second portion of data 40" in memory
`(block 210), the printing logic 149 then proceeds to block
`212 to determine if the printer has finished printing the first
`portion of data 40'. If the printer has finished printing the
`first portion of data 40', then the printing logic 149 sends the
`second portion of data 40" to the printer 128 (block 214). If
`the printer has not finished printing the first portion of data
`40', the printing logic 149 progresses to block 216 and
`determines whether a printing timeout has expired, where
`the printing timeout comprises a predefined period of time.
`When the printing timeout expires, the printing logic 149
`again executes the query of block 212.
`It will be appreciated that in this embodiment the block
`size of the first, second and any additional portions of data
`may be a predefined value or may be adjusted based upon
`one or more factors, such as data transfer speed between the
`computer system 100 and the server 106. A more detailed
`explanation of one embodiment of logic that adjusts the
`block size of the data portions is provided below.
`After storing the second portion of data 40" in memory,
`the printing logic 149 also determines whether the entire
`data file 169 has been received from the server 106. More
`specifically, in block 220 of the illustrated embodiment the
`printing logic 149 determines whether a “destroy stream”
`command has been received. If a “destroy stream” command
`has been received, the printing logic 149 ends. If a “destroy
`stream” command has not been received, the printing logic
`149 progresses to block 222 and gathers the Next portion of
`data from the stream. The printing logic 149 then stores the
`Next portion in the temporary storage segment 40 of the
`memory 116 (block 224). The printing logic 149 then
`progresses to block 226 where it determines if the printer
`128 has finished printing the Previous portion of data.
`If the printer has finished printing the Previous portion,
`then the printing logic 149 sends the Next portion of data to
`the printer 128 (block 228)