English:
[0001] Printing data from a computing device typically involves transmitting the data to a local printer, e.g. connected directly to the computing device or to a local network that includes the computing device. Print resources may be inaccessible to a computing device from outside such local networks, or may be accessible via multiple stages of communications between the computing device and various other devices, e.g. to gain access to the local networks.
[0004] FIG. 2 is a block diagram of certain internal hardware components of the server of FIG. 1.
[0005] FIG. 3 is a flowchart of a method of cloud-based printing.
[0006] FIG. 4A is a flowchart of an example implementation of block 310 of the method of FIG. 3.
[0007] FIG. 4B is a schematic diagram of the flow of data during the method of FIG. 4A.
[0008] FIG. 5 A is a flowchart of another example implementation of block 310 of the method of FIG. 3.
[0009] FIG. 5B is a schematic diagram of the flow of data during the method of FIG. 5A.
[0010] FIG. 6 is a flowchart of another method of cloud-based printing.
[0011] Skilled artisans will appreciate that elements in the figures are illustrated for simplicity and clarity and have not necessarily been drawn to scale. For example, the dimensions of some of the elements in the figures may be exaggerated relative to other elements to help to improve understanding of embodiments of the present invention.
[0012] The apparatus and method components have been represented where appropriate by conventional symbols in the drawings, showing only those specific details that are pertinent to understanding the embodiments of the present invention so as not to obscure the disclosure with details that will be readily apparent to those of ordinary skill in the art having the benefit of the description herein.
[0013] Examples disclosed herein are directed to a server including a memory storing printing configuration rules for interfacing with a printing system; a communications interface configured to communicate with a client device; a processor interconnected with the memory and the communications interface, the processor configured to: generate a print system network identifier mapped to the printing system, the print system network identifier configured for identifying print parameters for print jobs; receive, via the communications interface, a print request from the client device, the print request generated based on the print system network identifier and including one or more print parameters for a print job; and send a print instruction to the printing system to initiate the print job at the printing system according to the one or more print parameters, the print instruction generated according to the printing configuration rules.
[0014] Additional examples disclosed herein are directed to a method comprising: storing printing configuration rules for interfacing with a printing system; generating a print system network identifier mapped to the printing system, the print system network identifier configured for identifying print parameters for print jobs; receiving a print request from the client device, the print request generated based on the print system network identifier and including one or more print parameters for a print job; and sending a print instruction to the printing system to initiate the print job at the printing system according to the one or more print parameters, the print instruction generated according to the printing configuration rules.
[0015] Further examples disclosed herein are directed to a non-transitory computer- readable medium storing a plurality of computer-readable instructions executable by a processor, wherein execution of the instructions configures the processor to: generate a print system network identifier mapped to the printing system, the print system network identifier configured for identifying print parameters for print jobs; receive, via the communications interface, a print request from the client device, the print request generated based on the print system network identifier and including one or more print parameters for a print job; and send a print instruction to the printing system to initiate the print job at the printing system according to the one or more print parameters, the print instruction generated according to printing configuration rules stored in a memory.
[0016] FIG. 1 depicts an example system 100 for cloud-based printing. The system 100 includes a server 104, printing systems 108-1, 108-2, and client devices 112-1, 112-2, 112-3. The printing systems 108, and the client devices 112 are connected to the server 104 via communication links 106. The system 100 enables cloud- or web-based printing, and hence the communication links 106 may utilize suitable wide area networks (WAN), including cellular networks and the Internet. The communication links 106 may further utilize local area networks defined by one or more routers, switches, wireless access points, or the like.
[0017] The server 104 provides a cloud-based printing service so that a connected client device 112 may print to a printing system 108 via the server 104. More specifically, the server 104 is configured to enable cloud printing without requiring account creation or authentication. To enable this, the server 104 maps print system network identifiers (e.g., a uniform resource locator or URL) to each printing system 108. The print system network identifier is configured for identifying print parameters for print jobs. That is, print jobs may be initiated directly using the print system network identifier and may be processed without requiring authentication by the requesting client device 112. Thus, the print system network identifier is also configured to bypass authentication at the server 104.
[0018] In operation, the server 104 generates at least one print system network identifier for each printing system 108 registered with the server 104. Each print system network identifier maps to a corresponding printing system 108 and is configured for identifying print parameters for the print job. That is, the print system network identifier allows the print parameters for a print job to be specified at the client devices 112. For example, the print system network identifier may correspond to a web page in which end users may input print parameters, submission of which acts as a print request when received at the server 104. Alternately, the print parameters may be appended as variables to the print system network identifiers to form a print job network identifier, which acts as a print request when received at the server 104. Thus, access to the print system network identifiers enables print requests to be directly generated based on the print system network identifier.
[0019] The print system network identifiers may therefore be shared or distributed, including to third parties to reduce the number of back-and-forth communications required between the parties. For example, in a conventional model, an end user may request and download a document from a third party, and then generate a print request to print the document. In the present example, the end user may provide the print system network identifier to the third party. The third party may then generate the print request to print the document using the print system network identifier directly, and without the end user downloading the document. Advantageously, since the print request is generated using the print system network identifier directly, the third party may bypass authentication requirements with the server 104 and proceed to generate the print request.
[0020] The printing systems 108 may include any suitable systems configured to communicate with the server 104 via the communication links 106 and to print documents or other data. For example, the printing system 108-1 includes a printer 109- 1 and a separate computing device 110-1, such as a laptop computer, a desktop computer, a print server, or the like, which is interconnected with the printer 109-1 to bridge between the printer 109-1 and network communications with the server 104. The printing system 108-2 includes a cloud-enabled printer 109-2 having an integrated printer communications interface 110-2 to allow the printer 109-2 to communicate directly with the server 104.
[0021] The client devices 112 may be computing devices, such as desktop computers, laptop computers, mobile devices, kiosks, other servers, tablets, or other suitable computing devices. In particular, the client devices 112 are configured to communicate with the server 104 via the communication links 106 to initiate print jobs at one of the printing systems 108. The client devices 112 include suitable hardware (e.g., including communication interfaces, processors, memories, user interfaces, and the like) to enable the functionality described herein. For example, the client devices 112 may implement a web browser application to access the print system network identifier and to allow the user to input print parameters for a particular print job.
[0022] Referring to FIG. 2, the server 104, including certain internal components, is shown in greater detail. The server 104 includes a processor 200 interconnected with a non-transitory computer-readable storage medium, such as a memory 204. The memory 204 includes a combination of volatile memory (e.g. Random Access Memory or RAM) and non-volatile memory (e.g. read only memory or ROM, Electrically Erasable Programmable Read Only Memory or EEPROM, flash memory). The processor 200 and the memory 204 may each comprise one or more integrated circuits.
[0023] The memory 204 stores computer-readable instructions for execution by the processor 200. In particular, the memory 204 stores a control application 208 which, when executed by the processor 200, configures the processor 200 to perform various functions discussed below in greater detail and related to the printing operation of the server 104. The application 208 may also be implemented as a suite of distinct applications. The processor 200, when so configured by the execution of the application 208, may also be referred to as a controller 200.
[0024] Those skilled in the art will appreciate that the functionality implemented by the processor 200 may also be implemented by one or more specially designed hardware and firmware components, such as a field-programmable gate array (FPGAs), application-specific integrated circuits (ASICs) and the like in other embodiments. In an embodiment, the processor 200 may be, respectively, a special purpose processor which may be implemented via dedicated logic circuitry of an ASIC, an FPGA, or the like in order to enhance the processing speed of the dimensioning operations discussed herein.
[0025] The memory 204 also includes a repository 212 storing rules and data for printing operations. For example, the repository 212 may define, for each printing system 108, a print system network identifier, printing configuration rules, and other data pertaining to the printing system 108 (e.g., a nickname, print job thresholds, or the like). The printing configuration rules may include driver interfaces, communication protocols for sending print parameters and print data, or the like. In particular, each printing system 108 may have different printing configuration rules, and hence the repository 212 may define appropriate printing configuration rules for each printing system 108.
[0026] The server 104 also includes a communications interface 216 interconnected with the processor 200. The communications interface 216 includes suitable hardware (e.g. transmitters, receivers, network interface controllers and the like) allowing the server 104 to communicate with other computing devices - such as the printing systems 108 and the client devices 112 - via the links 106. The specific components of the communications interface 216 are selected based on the type of network or other links that the server 104 is to communicate over. The server 104 can be configured, for example, to communicate with the client devices 112 to receive print requests, and to send print instructions to the printing systems 108.
[0027] The processor 200 may also be connected to one or more input and/or output devices 224. The input devices 224 can include one or more keyboards, mice, touch- sensitive display screens or the like. The output devices 224 can further include one or more display screens, sound generators, or the like for providing output or feedback to an operator.
[0028] The functionality of the server 104, as implemented via execution of the applications 208 by the processor 200 will now be described in greater detail, with reference to FIG. 3. FIG. 3 illustrates a method 300 of cloud-based printing, which will be described in conjunction with its performance in the system 100, and in particular, by the server 104, with reference to the components illustrated in FIGS. 1 and 2. In other examples, the method 300 may be performed in other suitable systems.
[0029] At block 305, the server 104 generates a print system network identifier corresponding to each of the printing systems 108 associated with the server 104.
[0031] In some examples, at block 305, the server 104 may further provide the print system network identifiers to the client devices 112. For example, the print system network identifiers may be provided at a central web page (e.g., at “print.com/printer- list”) for look-up by the client devices 112. Accordingly, when a user operating the client device 112-2 uses a web browser application to access “print.com/printer-lisf’, the server 104 may provide the corresponding web page, listing the printing systems 108 for selection. In some examples, users may be required to authenticate or log in prior to viewing the list of printing systems 108 available for selection. The printing systems 108 may further be associated with a nickname and/or a description to allow the end users to differentiate the printing systems 108-1 and 108-2. For example, the printing system 108-1 may be associated with the description “black and white printer” while the printing system 108-2 may be associated with the description “color printer”. The listing may further include a status indicators and other printing system status information for each of the printing systems 108. For example, if the computing device 110-1 is offline, the printing system 108-1 may be unavailable. Other printing system status information may include, for example, a current queue length for documents queued to be printed.
[0032] The user may then select a printing system 108 at the client device 112-2, which generates a network identifier request. Responsive to the network identifier request, the server 104 may retrieve and provide the stored print system network identifier of the selected printing systems 108 and present it on the web page.
[0033] In other examples, rather than retrieving and providing the stored print system network identifier of the selected printing systems 108, responsive to each network identifier request, the server 104 may generate a new print system network identifier mapped to the printing system for each subsequent network identifier request. Thus, for example, new print system network identifier for the printing system 108-1 may include “print.com/printerl08-l/req2”, “print.com/printerl08-l/req3” and so on. The new print system network identifiers similarly identify the corresponding printing system 108 and are configured for identifying print parameters for print jobs. The new print system network identifiers are further configured to bypass authentication at the server 104. Thus, the server 104 may map many print system identifiers to each printing system 108.
[0034] Other criteria for generating new print system network identifiers are also contemplated. For example, the server 104 may generate new print system network identifiers based on distinct user identifiers, internet protocol (IP) addresses, or other suitable criteria. For example, users may log in or otherwise be authenticated in the system 100, and hence the server 104 may assign a unique print system network identifier to each user identifier. In further examples, rather than retrieving and providing the stored print system network identifier for the selected printing system 108, the web page listing the printing systems 108 may also directly present the print system network identifiers corresponding to the listed printing systems 108.
[0035] At block 310, the server 104 receives a print request, for example from the client device 112. Specifically, the print request is generated based on the print system network identifier and includes one or more print parameters for a print job. For example, the print system network identifier may correspond to a web page configured to receive the one or more print parameters for the print job. In particular, submission of the print parameters at the web page may act as the print request to the server 104. In other examples, the print request may correspond to a print job network identifier which includes the one or more print parameters appended to the print system network identifier.
[0036] For example, referring to FIGS. 4A and 4B an example method 400 of receiving a print request and a schematic of the method 400 are depicted. In particular, in the example method 400, the print system network identifier corresponds to a web page configured to receive the one or more print parameters for the print job.
[0037] At block 405, the server 104 receives a request 408 to resolve the print system network identifier. In particular, a user of the client device 112-2 may use a web browser application to access the network identifier “print.com/printerl08-2”. Accordingly, the client device 112-2 generates the request 408 to resolve the URL. According to standard communication protocols, the request 408 may be sent to the server 104, which hosts the network identifier “print.com”, to be resolved.
[0038] At block 410, the server 104 resolves the request 408, and provides, to the client device 112-2, a web page 412 corresponding to the network identifier “print.com/printerl08-2”. The web page 412 is configured to receive print parameters for the print job. For example, the web page 412 may be a form or the like, to allow the user to specify the number of copies of the document and other parameters of the print job. To identify the document to be printed, the web page 412 may accept uploads, or another network identifier (e.g., a URL) indicating the path of the document.
[0039] At block 415, the server 104 receives, via a submission request at the web page 412, a print request 418 including the one or more parameters input at the web page 412 for the print job. For example, once the user has input the print parameters at the web page 412, the user may select a “submit” button on the web page 412 to initiate the submission request. Thus, the print request 418 including the one or more parameters is submitted to the server 104. In some examples, after successfully receiving the print request 418, the server 104 may return a status indicator 420 to the client device 112-2. For example, the status indicator 420 may simply indicate the success or failure of transmission of the print request 418 to the server 104. In other examples, the status indicator 420 may be dynamic, and may be updated according to the progress of the print job (e.g., the print job is being transmitted to the printer, the printer is printing, the print job is complete).
[0040] Turning now to FIGS. 5A and 5B, another example method 500 of receiving a print request and a schematic of the method 500 are depicted. In particular, in the example method 500, the print parameters are to be appended to the print system network identifier to define a print job network identifying forming the print request.
[0041] At block 505, the server 104 receives a request 508 to resolve a print job network identifier. In particular, the client device 112-1 may generate the print job network identifier by taking the print system network identifier and appending print parameters as variables to the print system network identifier. The print parameters may specify, for example, the number of copies of the document (e.g., “num=2”) and other parameters of the print job. To identify the document to be printed, an embedded network identifier may be included to indicate the path of the document (e.g., “doc=docpath”). The print system network identifier and the parameters may thus be appended to form the print job network identifier “print.com/printerl08- 2/?num=2&doc=docpath”. The client device 112-1 may then generate the request 508 to resolve the URL. According to standard communication protocols, the request 508 may be sent to the server 104, which hosts the network identifier “print.com”, to be resolved.
[0042] At block 510, the server 104 resolves the request 508 and extracts the print system network identifier and print parameters 512 from the print job network identifier. The request 508 to resolve the print job network identifier thus acts as the print request for a print job having the print parameters 512. In some examples, after successfully resolving the request 508 and extracting the print parameters 512 for the print job, the server 104 may return a status indicator 520 to the client device 112-1. For example, the status indicator 520 may indicate the success or failure of the resolution of the request 508 and the extraction of the print parameters 512. In other examples, the status indicator 520 may be dynamic, and may be updated according to the progress of the print job (e.g., the print job is being transmitted to the printer, the printer is printing, the print job is complete).
[0043] In some examples, the server 104 may accommodate both the methods 400 and 500 to receive print requests. For example, users operating the mobile computing device 112-2, or the desktop computer 112-3 may use the method 400 as it provides a more user-friendly interface to input print parameters and generate the print request. Thus, a user desiring to print a document locally saved at the client devices 112-2 or 112-3 may access the web page corresponding to the print system network identifier “print.com/printerl08-2”, upload the document, and input the print parameters at the web page to generate the print request.
[0044] In contrast, the server 112-1 may automatically interface with the server 104, and hence it may be programmatically simpler to append print parameters to the print system network identifier to form a print job network identifier to generate the print request. For example, a user may desire to print a packaging label from “stamps.com”, hosted at the server 112-1. Rather than downloading the packaging label from “stamps.com” and uploading the packaging label to the web page corresponding to “print.com/printerl08-2”, the user may provide to the server 112-1 the print system network identifier “print.com/printerl08-2”. In some examples, the user may further provide to the server 112-1 print parameters for the print job. The server 112-1 may then translate the print parameters and the network identifier for the packaging label into suitable variables to be appended to the print system network identifier to form the print job network identifier “print. com/printer 108-2/?num=2&doc=docpath” for submission to the server 104 to generate the print request.
[0045] Returning now to FIG. 3, at block 315, the server 104 generates and sends a print instruction to the appropriate printing system 108. In particular, the server 104 generates the print instruction according to the printing configuration rules stored in the memory 204. The print instruction initiates the print job according to the print parameters received with the print request at block 310. In some examples, during or after the printing system 108 is executing the print job, the server 104 may receive a status indicator from the printing system 108 and may pass the status indication along to the requesting client device 112.
[0046] In some examples, prior to generating the print instruction, the server 104 may perform one or more checks to ensure that print job thresholds have not been exceeded. For example, referring to FIG. 6, an example method 600 of cloud-based printing including a check of print job thresholds. The method 600 is similar to the method 300, and like blocks are similarly numbered.
[0047] In particular, at block 605, the server 104 generates a print system network identifier. At block 610, the server 104 receives a print request from a client device 112, for example, by methods 400 or 500.
[0048] Prior to generating the print instruction, at block 612, the server 104 checks whether a print job threshold has been exceeded. For example, the server 104 may maintain, in the memory 204, a count of print jobs requested by an IP address over a predefined time interval (e.g., number of print jobs requested within the past 10 hours, 24 hours, 7 days, or the like). To reduce misuse of the system, the server 104 may compare the count of print jobs requested by the IP address to a threshold number of print jobs for the predefined time interval. When the count exceeds the threshold number of print jobs, the determination at block 612 is affirmative, and the server 104 proceeds to block 620. When the count does not exceed the threshold number of print jobs, the determination at block 615 is negative and the server 104 proceeds to block 615. In other examples, the server 104 may alternately or additionally implement other criteria for managing print jobs.
[0049] At block 615, the server 104 generates and sends the print instruction based on the printing configuration rules and the print parameters.
[0050] At block 620, the server 104 disallows the print request and any further print jobs from the IP address. The server 104 may return a notification to the client device, for example, indicating that the maximum number of print jobs for the predefined time interval has been reached.
[0051] In the foregoing specification, specific embodiments have been described. However, one of ordinary skill in the art appreciates that various modifications and changes can be made without departing from the scope of the invention as set forth in the claims below. Accordingly, the specification and figures are to be regarded in an illustrative rather than a restrictive sense, and all such modifications are intended to be included within the scope of present teachings.
[0052] The benefits, advantages, solutions to problems, and any element(s) that may cause any benefit, advantage, or solution to occur or become more pronounced are not to be construed as a critical, required, or essential features or elements of any or all the claims. The invention is defined solely by the appended claims including any amendments made during the pendency of this application and all equivalents of those claims as issued.
[0053] Moreover in this document, relational terms such as first and second, top and bottom, and the like may be used solely to distinguish one entity or action from another entity or action without necessarily requiring or implying any actual such relationship or order between such entities or actions. The terms "comprises," "comprising," “has”, “having,” “includes”, “including,” “contains”, “containing” or any other variation thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises, has, includes, contains a list of elements does not include only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. An element proceeded by “comprises ...a”, “has ...a”, “includes ...a”, “contains ...a” does not, without more constraints, preclude the existence of additional identical elements in the process, method, article, or apparatus that comprises, has, includes, contains the element. The terms “a” and “an” are defined as one or more unless explicitly stated otherwise herein. The terms “substantially”, “essentially”, “approximately”, “about” or any other version thereof, are defined as being close to as understood by one of ordinary skill in the art, and in one non-limiting embodiment the term is defined to be within 10%, in another embodiment within 5%, in another embodiment within 1% and in another embodiment within 0.5%. The term “coupled” as used herein is defined as connected, although not necessarily directly and not necessarily mechanically. A device or structure that is “configured” in a certain way is configured in at least that way, but may also be configured in ways that are not listed.
[0054] It will be appreciated that some embodiments may be comprised of one or more specialized processors (or “processing devices”) such as microprocessors, digital signal processors, customized processors and field programmable gate arrays (FPGAs) and unique stored program instructions (including both software and firmware) that control the one or more processors to implement, in conjunction with certain non-processor circuits, some, most, or all of the functions of the method and/or apparatus described herein. Alternatively, some or all functions could be implemented by a state machine that has no stored program instructions, or in one or more application specific integrated circuits (ASICs), in which each function or some combinations of certain of the functions are implemented as custom logic. Of course, a combination of the two approaches could be used.
[0055] Moreover, an embodiment can be implemented as a computer-readable storage medium having computer readable code stored thereon for programming a computer (e.g., comprising a processor) to perform a method as described and claimed herein. Examples of such computer-readable storage mediums include, but are not limited to, a hard disk, a CD-ROM, an optical storage device, a magnetic storage device, a ROM (Read Only Memory), a PROM (Programmable Read Only Memory), an EPROM (Erasable Programmable Read Only Memory), an EEPROM (Electrically Erasable Programmable Read Only Memory) and a Flash memory. Further, it is expected that one of ordinary skill, notwithstanding possibly significant effort and many design choices motivated by, for example, available time, current technology, and economic considerations, when guided by the concepts and principles disclosed herein will be readily capable of generating such software instructions and programs and ICs with minimal experimentation.
[0056] The Abstract of the Disclosure is provided to allow the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, it can be seen that various features are grouped together in various embodiments for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separately claimed subject matter.

中文:
[0001]从计算装置打印数据通常涉及将数据传输到例如直接连接到计算装置或连接到包括计算装置的本地网络的本地打印机。打印资源可以是对这种本地网络外部的计算装置不可访问的,或者可以经由计算装置与多种其他装置之间的例如用于获得对本地网络的访问的多级通信来访问。
[0004]图2是图1的服务器的某些内部硬件部件的框图。
[0005]图3是一种基于云的打印方法的流程图。
[0006]图4A是图3的方法的框310的示例实施方式的流程图。
[0007]图4B是在图4A的方法期间的数据流的示意图。
[0008]图5A是图3的方法的框310的另一示例实施方式的流程图。
[0009]图5B是在图5A的方法期间的数据流的示意图。
[0010]图6是另一种基于云的打印方法的流程图。
[0011]本领域的技术人员将理解,附图中的要素是出于简单和清楚的目的而阐释的且未必按比例绘制。例如,附图中的一些要素的尺寸可能相对于其他要素被放大了,以便帮助提升对本发明的实施例的理解。
[0012]在附图中,设备和方法部件已经在适当的地方由常规符号表示,仅示出了与理解本发明的实施例有关的那些具体细节,以便不会由于对于受益于这里的描述的本领域普通技术人员而言显而易见的细节而模糊本公开。
[0013]本文所公开的示例涉及一种服务器,该服务器包括存储器,该存储器存储用于与打印系统交互的打印配置规则;通信接口,该通信接口被配置为与客户机装置通信;处理器,该处理器与存储器和通信接口互连,该处理器被配置为:生成映射到打印系统的打印系统网络标识符,该打印系统网络标识符被配置为用于识别用于打印作业的打印参数;经由通信接口从客户机装置接收打印请求,该打印请求是基于打印系统网络标识符生成的并且包括用于打印作业的一个或多个打印参数;以及向打印系统发送打印指令以根据一个或多个打印参数在打印系统处启动打印作业,该打印指令是根据打印配置规则生成的。
[0014]本文所公开的其他示例涉及一种方法,该方法包括:存储用于与打印系统交互的打印配置规则;生成映射到打印系统的打印系统网络标识符,该打印系统网络标识符被配置为用于识别用于打印作业的打印参数;从客户机装置接收打印请求,该打印请求是基于打印系统网络标识符生成的并且包括用于打印作业的一个或多个打印参数;以及向打印系统发送打印指令以根据一个或多个打印参数在打印系统处启动打印作业,该打印指令是根据打印配置规则生成的。
[0015]本文所公开的其他示例涉及一种非暂时性计算机可读介质,该非暂时性计算机可读介质存储可由处理器执行的多个计算机可读指令,其中,指令的执行将处理器配置为:生成映射到打印系统的打印系统网络标识符,该打印系统网络标识符被配置为用于识别用于打印作业的打印参数;经由通信接口从客户机装置接收打印请求,该打印请求是基于打印系统网络标识符生成的并且包括用于打印作业的一个或多个打印参数;以及向打印系统发送打印指令以根据一个或多个打印参数在打印系统处启动打印作业,该打印指令是根据存储在存储器中的打印配置规则生成的。
[0016]图1示出了用于基于云的打印的示例系统100。系统100包括服务器104,打印系统108-1、108-2和客户机装置112-1、112-2、112-3。打印系统108和客户机装置112通过通信链路106连接到服务器104。系统100使得能够基于云或基于网络地打印,因此通信链路106可利用合适的广域网(WAN),包括蜂窝网络和互联网。通信链路106还可以利用由一个或多个路由器、交换机、无线接入点等定义的局域网。
[0017]服务器104提供基于云的打印服务,使得被连接的客户机装置112可以经由服务器104到打印系统108进行打印。更具体地,服务器104被配置为在不需要创建帐户或进行认证的情况下启用云打印。为了实现这一点,服务器104将打印系统网络标识符(例如,统一资源定位系统或者说URL)映射到各打印系统108。打印系统网络标识符被配置为用于识别用于打印作业的打印参数。即,打印作业可直接使用打印系统网络标识符来启动,并且可在不需要请求客户机装置112认证的情况下处理。因此,打印系统网络标识符还被配置为绕过服务器104处的认证。
[0018]在操作中,服务器104为向服务器104注册的每个打印系统108生成至少一个打印系统网络标识符。每个打印系统网络标识符都映射到相应的打印系统108,并被配置为用于识别用于打印作业的打印参数。即,打印系统网络标识符允许用于打印作业的打印参数在客户机装置112处被指定。例如,打印系统网络标识符可以对应于可供终端用户输入打印参数的网页,当在服务器104处接收到该打印参数时,该打印参数的提交充当打印请求。替代地,打印参数可以作为变量附加到打印系统网络标识符以形成打印作业网络标识符,当在服务器104处接收到该打印作业网络标识符时,该打印作业网络标识符充当打印请求。因此,对打印系统网络标识符的访问使得能够基于打印系统网络标识符直接生成打印请求。
[0019]因此,打印系统网络标识符可以被共享或分发,包括分享或分发给第三方以减少各方之间所需的来回通信的数量。例如,在传统模型中,终端用户可以从第三方请求和下载文件,然后生成打印该文件的打印请求。在本示例中,终端用户可以向第三方提供打印系统网络标识符。然后,第三方可以直接使用打印系统网络标识符生成打印请求以打印文件,而无需终端用户下载文件。有利地,由于直接使用打印系统网络标识符来生成打印请求,所以第三方可以绕过对服务器104的认证要求,并且继续生成打印请求。
[0020]打印系统108可以包括被配置为经由通信链路106与服务器104通信并且打印文件或其他数据的任何合适的系统。例如,打印系统108-1包括打印机109-1和单独的计算装置110-1,例如笔记本计算机、台式计算机、打印服务器等,该计算装置与打印机109-1互连以便在打印机109-1和与服务器104的网络通信之间建立连接。打印系统108-2包括支持云的打印机109-2,该打印机具有集成的打印机通信接口110-2,以允许打印机109-2直接与服务器104通信。
[0021]客户机装置112可以是计算装置,例如台式计算机、笔记本计算机、移动装置、自助服务机、其他服务器、平板计算机或其他合适的计算装置。特别地,客户机装置112被配置为经由通信链路106与服务器104通信,以在打印系统108之一处发起打印作业。客户机装置112包括合适的硬件(例如,包括通信接口、处理器、存储器、用户接口等)以实现这里描述的功能。例如,客户机装置112可以实现网页浏览器应用程序,以访问打印系统网络标识符并允许用户输入用于特定打印作业的打印参数。
[0022]参考图2,更详细地示出了包括某些内部部件的服务器104。服务器104包括处理器200,该处理器与非暂时性计算机可读存储介质(例如存储器204)互连。存储器204包括易失性存储器(例如随机存取存储器或者说RAM)和非易失性存储器(例如只读存储器或者说ROM、带电可擦可编程只读存储器或者说EEPROM、快闪存储器)的组合。处理器200和存储器204可以各自包括一个或多个集成电路。
[0023]存储器204存储由处理器200执行的计算机可读指令。特别地,存储器204存储控制应用程序208,当处理器200执行该控制应用程序时,该控制应用程序配置处理器200以执行多种功能,这些功能将在下面更详细地讨论并且与服务器104的打印操作相关。应用程序208还可被实现为一组不同的应用程序。当通过执行应用程序208如此配置处理器200时,该处理器也可被称为控制器200。
[0024]本领域的技术人员将理解,由处理器200实现的功能还可以在其他实施例中由一个或多个专门设计的硬件和固件部件(例如现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)实现。在一个实施例中,处理器200可以分别是专用处理器,该专用处理器可以经由ASIC、FPGA等的专用逻辑电路来实现,以便提高这里所讨论的量度操作的处理速度。
[0025]存储器204还包括储存库212,该储存库存储用于打印操作的规则和数据的。例如,储存库212可以为每个打印系统108定义打印系统网络标识符、打印配置规则以及与打印系统108有关的其他数据(例如,昵称、打印作业阈值等)。打印配置规则可以包括驱动器接口、用于发送打印参数和打印数据的通信协议等。特别地,每个打印系统108可以具有不同的打印配置规则,并且因此储存库212可以为每个打印系统108定义适当的打印配置规则。
[0026]服务器104还包括与处理器200互连的通信接口216。通信接口216包括合适的硬件(例如,发射器、接收器、网络接口控制器等),该硬件允许服务器104经由链路106与诸如打印系统108和客户机装置112之类的其他计算装置通信。基于服务器104要在其上通信的网络或其他链路的类型来选择通信接口216的特定部件。服务器104可以被配置为例如与客户机装置112通信以接收打印请求、并向打印系统108发送打印指令。
[0027]处理器200还可以连接到一个或多个输入和/或输出装置224。输入装置224可以包括一个或多个键盘、鼠标、触敏显示屏等。输出装置224还可以包括一个或多个显示屏、声音发生器等,用于向操作者提供输出或反馈。
[0028]现在将参考图3更详细地描述由处理器200通过执行应用程序208实现的服务器104的功能。图3示出了基于云的打印的方法300,该方法将结合其在系统100中的性能、特别是通过服务器104、参考图1和图2中所示的部件来描述。在其他示例中,方法300可以在其他合适的系统中执行。
[0029]在框305处,服务器104生成与服务器104相关联的打印系统108中的每一个相对应的打印系统网络标识符。
[0031]在一些示例中,在框305处,服务器104还可以向客户机装置112提供打印系统网络标识符。例如,可以在中央网页(例如,在“print.com/printer-list”)处提供打印系统网络标识符以供客户机装置112查找。因此,当操作客户机装置112-2的用户使用网页浏览器应用程序来访问“print.com/printer-list”时,服务器104可以提供相应的网页、列出打印系统108以供选择。在一些示例中,可能要求用户在查看可供选择的打印系统108的列表之前进行认证或登录。打印系统108还可以与昵称和/或描述相关联,以允许终端用户区分打印系统108-1和打印系统108-2。例如,打印系统108-1可以与描述“黑白打印机”相关联,而打印系统108-2可以与描述“彩色打印机”相关联。列表还可以包括用于每个打印系统108的状态指示符和其他打印系统状态信息。例如,如果计算装置110-1离线,则打印系统108-1可能不可用。其他打印系统状态信息可以包括例如排队待打印的文件的当前队列长度。
[0032]然后,用户可以在客户机装置112-2处选择打印系统108,该客户机装置生成网络标识符请求。响应于网络标识符请求,服务器104可以检索并提供所选择的打印系统108的已存储的打印系统网络标识符,并将该标识符呈现在网页上。
[0033]在其他示例中,服务器104可以对每个后续网络标识符请求生成映射到打印系统的新的打印系统网络标识符,而不是响应于每个网络标识符请求检索并提供所选择的打印系统108的已存储的打印系统网络标识符。因此,例如,对于打印系统108-1的新的打印系统网络标识符可以包括“print.com/printer108-1/req2”、“print.com/printer108-1/req3”等。新的打印系统网络标识符类似地识别相应的打印系统108,并被配置为用于识别用于打印作业的打印参数。新的打印系统网络标识符还被配置为绕过服务器104处的认证。因此,服务器104可以将多个打印系统标识符映射到每个打印系统108。
[0034]也可以考虑用于生成新的打印系统网络标识符的其他准则。例如,服务器104可以基于不同的用户标识符、互联网协议(IP)地址或其他合适的准则来生成新的打印系统网络标识符。例如,用户可在系统100中进行登录或者认证,并且因此服务器104可向每个用户标识符分配独特的打印系统网络标识符。在其他示例中,列出打印系统108的网页还可以直接呈现对应于所列出的打印系统108的打印系统网络标识符,而不是检索并提供所存储的用于所选打印系统108的打印系统网络标识符。
[0035]在框310处,服务器104例如从客户机装置112接收打印请求。具体地,打印请求是基于打印系统网络标识符生成的,并且包括用于打印作业的一个或多个打印参数。例如,打印系统网络标识符可以对应于被配置为接收用于打印作业的一个或多个打印参数的网页。特别地,在网页上提交打印参数可以作为对服务器104的打印请求。在其他示例中,打印请求可以对应于打印作业网络标识符,该打印作业网络标识符包括附加到打印系统网络标识符的一个或多个打印参数。
[0036]例如,参考图4A和图4B,示出了接收打印请求的示例方法400和该方法400的示意图。特别地,在示例方法400中,打印系统网络标识符对应于被配置为接收用于打印作业的一个或多个打印参数的网页。
[0037]在框405处,服务器104接收解析打印系统网络标识符的请求408。特别地,客户机装置112-2的用户可以使用网页浏览器应用程序来访问网络标识符“print.com/printer108-2”。相应地,客户机装置112-2生成解析URL的请求408。根据标准通信协议,可以将请求408发送到托管网络标识符“print.com”的服务器104以进行解析。
[0038]在框410处,服务器104解析请求408,并向客户机装置112-2提供对应于网络标识符“print.com/printer108-2”的网页412。网页412被配置为接收用于打印作业的打印参数。例如,网页412可以是表格等,以允许用户指定文件的副本数量和打印作业的其他参数。为了识别要打印的文件,网页412可接受上传或指示文件路径的另一网络标识符(例如URL)。
[0039]在框415处,服务器104经由网页412处的提交请求接收打印请求418,该打印请求418包括在网页412处输入的用于打印作业的一个或多个参数。例如,一旦用户在网页412上输入了打印参数,用户就可以选择网页412上的“提交”按钮来启动提交请求。因此,包括一个或多个参数的打印请求418被提交给服务器104。在一些示例中,在成功接收到打印请求418之后,服务器104可以向客户机装置112-2返回状态指示符420。例如,状态指示符420可以简单地指示向服务器104传输打印请求418的成功或失败。在其他示例中,状态指示符420可以是动态的,并且可以根据打印作业的进度来更新(例如,打印作业正被传送到打印机、打印机正在打印、打印作业完成)。
[0040]现在转到图5A和图5B,描绘了接收打印请求的另一示例方法500和该方法500的示意图。特别地,在示例方法500中,打印参数将被附加到打印系统网络标识符,以定义形成打印请求的打印作业网络标识符。
[0041]在框505处,服务器104接收解析打印作业网络标识符的请求508。特别地,客户机装置112-1可以通过采用打印系统网络标识符并将打印参数作为变量附加到打印系统网络标识符来生成打印作业网络标识符。打印参数可指定例如文件的副本数目(例如,“num=2”)和用于打印作业的其他参数。为了识别要打印的文件,可以包括嵌入式网络标识符以指示文件的路径(例如,“doc=docpath”)。因此,可以附加打印系统网络标识符和参数以形成打印作业网络标识符“print.com/printer108-2/?num=2&doc=docpath"。客户机装置112-1然后可以生成解析URL的请求508。根据标准通信协议,可以将请求508发送到托管网络标识符“print.com”的服务器104以进行解析。
[0042]在框510处,服务器104解析请求508并从打印作业网络标识符中提取打印系统网络标识符和打印参数512。解析打印作业网络标识符的请求508因此充当对具有打印参数512的打印作业的打印请求。在一些示例中,在成功地解析请求508并提取用于打印作业的打印参数512之后,服务器104可向客户机装置112-1返回状态指示符520。例如,状态指示符520可以指示解析请求508和提取打印参数512的成功或失败。在其他示例中,状态指示符520可以是动态的,并且可以根据打印作业的进度来更新(例如,打印作业正被传送到打印机、打印机正在打印、打印作业完成)。
[0043]在一些示例中,服务器104可容纳方法400和方法500两者,以接收打印请求。例如,操作移动计算装置112-2或台式计算机112-3的用户可以使用方法400,因为该方法提供更用户友好的接口来输入打印参数并生成打印请求。因此,期望打印本地保存在客户机装置112-2或客户机装置112-3处的文件的用户可以访问与打印系统网络标识符“print.com/printer108-2”相对应的网页、上传该文件、并在网页中输入打印参数以生成打印请求。
[0044]相反,服务器112-1可以自动地与服务器104交互,并且因此可以在编程上更简单地将打印参数附加到打印系统网络标识符,以形成打印作业网络标识符来生成打印请求。例如,用户可能希望从托管在服务器112-1处的“stamps.com”打印包装标签。用户可以向服务器112-1提供打印系统网络标识符“print.com/printer108-2”,而不是从“stamps.com”下载包装标签并将包装标签上传到对应于“print.com/printer108-2”的网页。在一些示例中,用户还可以向服务器112-1提供用于打印作业的打印参数。然后,服务器112-1可以将用于包装标签的打印参数和网络标识符转换为适当的变量,以便附加到打印系统网络标识符,从而形成打印作业网络标识符“print.com/printer108-2/?num=2&doc=docpath”,该标识符用于提交给服务器104以生成打印请求。
[0045]现在返回到图3,在框315处,服务器104生成打印指令并将其发送到适当的打印系统108。特别地,服务器104根据存储在存储器204中的打印配置规则生成打印指令。打印指令根据与在框310处的打印请求一起被接收到的打印参数启动打印作业。在一些示例中,在打印系统108执行打印作业期间或之后,服务器104可以从打印系统108接收状态指示符,并且可以将状态指示传递至正请求的客户机装置112。
[0046]在一些示例中,在生成打印指令之前,服务器104可以执行一个或多个检查以确保没有超过打印作业阈值。例如,参考图6,基于云的打印的示例方法600包括检查打印作业阈值。方法600类似于方法300,并且类似的框被类似地编号。
[0047]特别地,在框605处,服务器104生成打印系统网络标识符。在框610处,服务器104例如通过方法400或方法500从客户机装置112接收打印请求。
[0048]在生成打印指令之前,在框612处,服务器104检查是否已超过打印作业阈值。例如,服务器104可以在存储器204中维持由一IP地址在预定时间间隔内请求的打印作业的计数(例如,在过去的10小时、24小时、7天等内请求的打印作业的数量)。为了减少系统的误用,服务器104可以将该IP地址请求的打印作业的计数与预定时间间隔内的打印作业的阈值数目进行比较。当计数超过打印作业的阈值数目时,框612处的决断是肯定的,并且服务器104前进到框620。当计数没有超过打印作业的阈值数目时,框615处的决断是否定的,并且服务器104前进到框615。在其他示例中,服务器104可以替代地或附加地实现用于管理打印作业的其他准则。
[0049]在框615处,服务器104基于打印配置规则和打印参数生成并发送打印指令。
[0050]在框620处,服务器104驳回打印请求以及来自该IP地址的任何其他打印作业。服务器104可以向客户机装置返回通知,例如指示已经达到预定时间间隔的打印作业的最大数量的通知。
[0051]在上面的说明书中已经描述了具体的实施例。但是,本领域的技术人员应当理解,在不偏离由后附权利要求书所限定的本发明的保护范围的情况下,可以做出各种修改和改变。因此,说明书和附图应被视为是说明性的,而不是限制性的,所有这些修改均旨在包括在本发明的保护范围内。
[0052]这些好处、优点、问题的解决方案以及可能导致任何好处、优点或解决方案发生或变得更加明显的任何要素,都不应理解为任何或所有权利要求的关键、必需或基本的特征或要素。本发明仅由后附的权利要求书(包括在本申请未决期间所作的任何修改)以及授权权利要求的所有等同方案限定。
[0053]此外,在本申请中,诸如第一和第二、顶部和底部等关系性术语仅用于区分一个实体或动作与另一个实体或动作,而不一定要求或暗示这些实体或动作之间有任何实际的这种关系或次序。术语“包括”、“包括”、“具有”、“具有”、“包含”、“包含”、“含有”、“含有”或其任何其他变体,旨在涵盖非排他性的包含,因此包括、具有、包含、含有一系列元素的工艺、方法、物品或装置并不只包括这些元素,而是还可包括未明确列出或该工艺、方法、物品或装置固有的其他元素。在没有更多限制的情况下,跟在“包括一......”、“具有一......”、“包含一......”、“含有一......”后面的元素并不排除在包括、具有、包含、含有该元素的过程、方法、物品或装置中存在其它的相同元素。术语“一”和“一个”被定义为一个或多个,除非本文中有明确的相反说明。如本领域的技术人员所理解的,术语“大致”、“基本上”、“大约”、“约”或者任何其它的说法被定义为接近,在一个非限制性实施例中,上述术语被定义为在10%以内,在另一个实施例中,上述术语被定义为在5%以内,在另一个实施例中,上述术语被定义为在1%以内,在另一个实施例中,上述术语被定义为在0.5%以内。本文中所用的术语“联接”被定义为连接,但不一定是直接连接,也不一定是机械连接。以某种方式“构造”的装置或结构至少是以所述方式构造的,但也可能以未列出的方式构造。
[0054]应当理解的是,一些实施例可由一个或多个专门的处理器(或“处理装置”)以及独特的存储程序指令(包括软件和固件)组成,所述处理器例如是微处理器、数字信号处理器、定制处理器和现场可编程门阵列(FPGA),所述存储程序指令控制所述一个或多个处理器以便与某些非处理器电路一起实现本文所述方法和/或设备的一些、大部分或全部功能。选择性地,一些或全部功能可以由没有存储程序指令的状态机来实现,或者在一个或多个专用集成电路(ASICs)中实现,其中每个功能或某些功能的一些组合是作为定制逻辑来实现的。当然,也可以使用这两种方法的组合。
[0055]此外,一个实施例可以实现为计算机可读存储介质,其上存储的计算机可读代码用于对计算机(例如,包括处理器)进行编程,以执行本文所述和要求保护的方法。这种计算机可读存储介质的实例包括但不限于硬盘、CD-ROM、光存储设备、磁存储设备、ROM(只读存储器)、PROM(可编程只读存储器)、EPROM(可擦除可编程只读存储器)、EEPROM(电可擦除可编程只读存储器)和闪存。此外,可以想到的是,尽管例如出于可用的时间、当前的技术和经济考虑可能要付出巨大的努力并且存在许多可选设计,但在本文公开的概念和原则的指导下,本领域的普通技术人员只需进行最少量的实验就能很容易做出这种软件指令、程序以及集成电路。
[0056]提供的说明书摘要是为了让读者快速确定所公开的技术的性质。应当理解的是,摘要不应被用来解释或限制权利要求书的保护范围或含义。此外,在前面的具体实施方式中可以看到,为了使公开的内容行文流畅,在不同的实施例中把各种特征组合在了一起。但是,这种公开方法并不意味着要求保护的实施例需要比在每项权利要求中所明确记载的更多的特征。相反,正如后附权利要求书所反映的,本发明的主题并不是包括了单个公开实施例的所有特征。因此,后附权利要求书在此并入具体实施方式,其中每项权利要求作为单独要求保护的主题而独立存在。