Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
PRINT POOL PORTS
Document Type and Number:
WIPO Patent Application WO/2022/051735
Kind Code:
A1
Abstract:
Printer pool ports are described. In some examples, a computing device can include a processor resource and a non-transitory memory resource storing machine-readable instructions stored thereon that, when executed, cause the processor resource to: generate a plurality of print job threads utilizing a corresponding plurality of print pool ports in parallel, wherein the plurality of print job threads are generated by different applications and utilize corresponding print properties, generate a list of printing devices for the plurality of print job threads based on the corresponding print properties, determine a corresponding selected printing device for the plurality of print job threads, and alter a print data language, a layout, and a destination port for the plurality of print job threads based on the corresponding selected printing device in parallel.

Inventors:
SIRIGIRI SEKHAR MUNI (IN)
B T DARSHAN (IN)
GOWRABATHINA VIJAY KUMAR (IN)
RANJAN RAVI (IN)
Application Number:
PCT/US2021/070317
Publication Date:
March 10, 2022
Filing Date:
March 26, 2021
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HEWLETT PACKARD DEVELOPMENT CO (US)
International Classes:
H04N1/32; G06F3/12
Foreign References:
US20040179230A12004-09-16
US20060209343A12006-09-21
US20140126014A12014-05-08
US20040254911A12004-12-16
US20050179936A12005-08-18
Attorney, Agent or Firm:
SORENSEN, C. Blake (US)
Download PDF:
Claims:
What is claimed is:

1. A computing device, comprising: a processor resource; and a non-transitory memory resource storing machine-readable instructions stored thereon that, when executed, cause the processor resource to: generate a print job thread utilizing a print pool port, wherein the print job thread includes print properties associated with a print job; identify a plurality of printing devices that includes functions to execute the print job based on the print properties; determine a selected printing device from the plurality of printing devices; and alter a print data language and a destination port of the print job thread in response to the selected printing device.

2. The computing device of claim 1 , wherein the processor resource is to alter a layout associated with the print job thread based on the selected printing device.

3. The computing device of claim 1 , wherein the print pool port is dynamically associated with a plurality of destination ports including the destination port of the selected printing device.

4. The computing device of claim 3, wherein the print pool port is a virtual port to generate the print job thread and the plurality of destination ports are associated with corresponding printing devices.

5. The computing device of claim 1 , wherein the processor resource is to generate, in parallel with the print job thread, a plurality of additional print job threads utilizing an additional plurality of print pool ports.

6. The computing device of claim 1 , wherein the selected printing device is one of a physical printing device and a virtual printing device.

7. A non-transitory memory resource storing machine-readable instructions stored thereon that, when executed, cause the processor resource to: generate a plurality of print job threads utilizing a corresponding plurality of print pool ports in parallel, wherein the plurality of print job threads are generated by different applications and utilize corresponding print properties; generate a list of printing devices for the plurality of print job threads based on the corresponding print properties; determine a corresponding selected printing device for the plurality of print job threads; and alter a print data language, a layout, and a destination port for the plurality of print job threads based on the corresponding selected printing device in parallel.

8. The medium of claim 7, wherein the processor resource is to determine a delivery path to the corresponding selected printing device for the plurality of print job threads and release, in parallel, the plurality of print job threads to the corresponding selected printing devices.

9. The medium of claim 7, wherein the corresponding selected printing devices include a plurality of different printing device types.

10. The medium of claim 7, wherein the processor resource is to update a portion of the corresponding plurality of print properties based on the corresponding selected printing device.

11. The medium of claim 7, wherein the list of printing devices for the plurality of print job threads includes printing devices that are available at a time of selection.

12. A system, comprising: a first printing device that utilizes a first print data language and a first destination port; a second printing device that utilizes a second print data language that is different than the first print data language and utilizes a second destination port that is different than the first destination port; 19 a computing device that includes a plurality of print pool ports that can be dynamically associated with the first printing device and the second printing device, and a processor resource to: generate a first print job thread utilizing a first print pool port of the plurality of print ports; generate, in parallel with the first print job thread, a second print job thread utilizing a second print pool port of the plurality of print pool ports; determine the first printing device to be a first selected printing device for the first print job thread and the second printing device to be a second selected printing device for the second print job thread; alter the first print job thread to utilize the first print data language and alter the second print job thread to utilize the second print data language; alter the first print job thread to utilize the first destination port and alter the second print job thread to utilize the second destination port; and release the first print job thread to the first printing device and release the second print job thread to the second printing device.

13. The system of claim 12, wherein processor resource is to generate a third print job thread utilizing a third print pool port of the plurality of print pool ports and release the third print job thread to the first printing device when the first printing device is a selected printing device for the third print job thread.

14. The system of claim 12, wherein the processor resource is to dissociate the first print pool port from the first printing device upon completion of the first print job thread.

15. The system of claim 12, wherein the processor resource is to alter a layout of the first print job thread based on the first printing device and alter a layout of the second print job thread based on the second printing device.

Description:
PRINT POOL PORTS

Background

[0001] A computing device can allow a user to utilize computing device operations for work, education, gaming, multimedia, and/or other uses. Computing devices can be utilized in a non-portable setting, such as at a desktop, and/or be portable to allow a user to carry of otherwise bring with the computing device with while in a mobile setting. These computing devices can be utilized to communicate with printing devices. For example, computing devices can be utilized to generate printjobs that can be executed by the printing devices.

Brief Description of the Drawings

[0002] Figure 1 is an example of a system including a computing device for utilizing print pool ports.

[0003] Figure 2 illustrates an example of a memory resource storing instructions for utilizing print pool ports.

[0004] Figure 3 illustrates an example of a system including a computing device for utilizing print pool ports.

[0005] Figure 4 illustrates an example of a flow diagram for utilizing print pool ports.

Detailed Description

[0006] A user may utilize a computing device for various purposes, such as for business and/or recreational use. As used herein, the term “computing device” refers to an electronic system having a processor resource and a memory resource. Examples of computing devices can include, for instance, a laptop computer, a notebook computer, a desktop computer, networking device (e.g., router, switch, etc.), and/or a mobile device (e.g., a smart phone, tablet, personal digital assistant, smart glasses, a wrist-worn device, etc.), among other types of computing devices. As used herein, a mobile device refers to devices that are (or can be) carried and/or worn by a user. For example, a mobile device can be a phone (e.g., a smart phone), a tablet, a personal digital assistant (PDA), smart glasses, and/or a wrist-worn device (e.g., a smart watch), among other types of mobile devices.

[0007] In some examples, the computing devices can instruct printing devices to generate print images and/or print documents. As used herein, printing devices can be physical devices that can generate images (e.g., text, pictures, etc.) on print medium and/or virtual devices that can generate digital format images (e.g., Portable Document Format (PDF) documents, etc.). In some examples, the computing devices can utilize print ports to transmit print jobs from the computing device to the printing device. In some examples, the computing devices can transmit digital representations in a print data language that can be utilized by the printing device to generate a print document of the digital representations.

[0008] In some examples, printing devices can be different types of printing devices. In some examples, a particular type of printing device can provide a particular set of functions and/or utilize a particular print data language to generate print documents. For example, a first type of printing device can include functions to print monochrome images on print medium and a second type of printing device can include functions to print multicolor images on print medium. In another example, a first type of printing device can include functions to generate physical print images and a second type of printing device can include functions to generate digital print images.

[0009] In previous examples, a computing device may utilize print ports associated with particular destination port. For example, the computing device can utilize a particular driver and print port to communicate with a particular computing device. The present disclosure relates to utilizing print pool ports to provide a driver and print queue that can be utilized with a plurality of printing devices when the plurality of printing devices include different types of printing devices. For example, the present disclosure relates to computing devices that include print pool ports that can each be utilized to generate print job threads in parallel. In this example, the print pool ports may not be associated with a particular printing device. In this way, a print pool port can be dynamically associated with a first printing device type for a first print job and dynamically associated with a second printing device type for a second print job. In this way, a plurality of print job threads can be generated and released to a plurality of different printing devices even when the printing devices are different types of printing devices.

[0010] Figure 1 is an example of a system 100 including a computing device 102 for utilizing print pool ports. In some examples, the computing device 102 can include a processor resource 104 communicatively coupled to a memory resource 106. As described further herein, the memory resource 106 can include instructions 108, 110, 112, 114 that can be executed by the processor resource 104 to perform particular functions. In some examples, the computing device 102 can be associated with a plurality of printing devices such as a cloud resource 118, a first type of printing device 120, and/or a second type of printing device 122. Although three types of printing devices are illustrated in Figure 1 , additional or fewer printing devices or printing device types can be utilized.

[0011] In some examples, the computing device 102 can be communicatively coupled to plurality of printing devices through communication paths 116-1 , 116-2, 116-3. As used herein, a communication path, such as communication paths 116-1 , 116-2, 116-3, refers to a connection that allows signals to be transferred between devices. In these examples, the signals can be utilized to provide communication between different devices and/or components within a device. For example, the computing device 102 can utilize the communication paths 116-1 , 116-2, 116-3 to send or transmit print job threads to the plurality of printing devices.

[0012] As described herein, the computing device 102 can be utilized to control functions of the plurality of printing devices and/or other peripheral devices. The computing device 102 can include a plurality of components such as a processor, an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a metal-programmable cell array (MPCA), or other combination of circuitry and/or logic to orchestrate execution of instructions 108, 110, 112, 114. In other examples, the computing device 102 can include instructions 108, 110, 112, 114 stored on a machine-readable medium (e.g., memory resource 106, non- transitory computer-readable medium, etc.) and executable by a processor resource 104. In a specific example, the computing device 102 utilizes a non-transitory computer-readable medium storing instructions 108, 110, 112, 114 that, when executed, cause the processor resource 104 to perform corresponding functions.

[0013] In some examples, the computing device 102 can include instructions 108 that can be executed by a processor resource 104 to generate a printjob thread utilizing a print pool port, wherein the print job thread includes print properties associated with a print job. As used herein, a print pool port can include virtual device of the computing device 102 that can be utilized to generate print job threads for a “pool” of printing devices. As used herein, a “pool” of printing devices can include a plurality of printing devices that are communicatively coupled to the computing device 102. In some examples, the pool of printing devices can include a plurality of different types of printing devices. In some examples, a print pool port is a virtual port to generate a print job thread and the plurality of destination ports can be associated with corresponding printing devices (e.g., physical printing devices, virtual printing devices, cloud resources, etc.). As described herein, different types of printing devices can include printing devices that can provide different functions, utilize different print data language, utilize different print job layouts, and/or generate different types of printouts. For example, a first type of printing device can include an inkjet printing device and a second type of printing device can include a laser printing device.

[0014] In some examples, generating a print job thread can include generating data associated with a print job. In some examples, the print job thread can include device configuration, rendering configuration, and/or delivery configuration. As used herein, the device configuration can include layout adjustments, displays, and/or details of delivering a print job to a particular printing device. That is, a print job thread can update a portion of the corresponding plurality of print properties based on the corresponding selected printing device. For example, the device configuration can include data related to the image to be printed, the layout of the image to be printed, among other features of the print job to be printed. As described further herein, the device configuration can be dynamically updated based on a selected printing device. As used herein, the rendering configuration can include the print data language to be utilized for a particular printing device. For example, the print data language can include, but is not limited to XPS, PCL6, PDF, PCL3, PCLmS, and/or pass through, among other print data languages that can be utilized by different printing devices. As used herein, the delivery configuration can include synchronization of delivery of the print job thread when a plurality of print job threads are generated. For example, the delivery configuration can include a destination port that can be associated with a particular printing device of the plurality of printing devices. In some examples, the computing device 102 can determine a delivery path to a corresponding selected printing device for the plurality of printjob threads and release, in parallel, the plurality of print job threads to the corresponding selected printing devices. As described further herein, the delivery configuration can be dynamically updated based on a selected printing device.

[0015] In some examples, the computing device 102 can include instructions 110 that can be executed by a processor resource 104 to identify a plurality of printing devices that includes functions to execute the print job based on the print properties. In some examples, the computing device 102 can identify a first type of printing device 120, a second type of printing device 122, a cloud resource 118, and/or a plurality of additional printing devices that can be associated with the computing device 102. For example, the first type of printing device 120 and the second type of printing device 122 can be accessible through a network. In some examples, the network local area network, wide area network within a firewall or through a cloud when the printing devices are outside the firewall. In some examples, the computing device 102 can determine the functions of the plurality of printing devices and provide a single print queue for the plurality of printing devices. For example, the computing device 102 can provide a selection for a universal print queue. In this example, the selected print queue can provide functions for the plurality of printing devices associated with the universal print queue. In this example, a plurality of functions can be selected to perform a particular print job, a list of printing devices that are capable of providing the selected functions can be generated, and a printing device from the list of printing devices can be selected. In some examples, the list of printing devices for the plurality of print job threads can include printing devices that are available at a time of selection. As used herein, an available printing device is capable of performing or executing the print job thread and/or is communicatively coupled to the computing device 102 upon generation of the list.

[0016] In some examples, the computing device 102 can include instructions 112 that can be executed by a processor resource 104 to determine a selected printing device from the plurality of printing devices. As described herein, a universal print queue can be utilized to select a plurality of functions to be performed to generate a print job output. The selected printing device can include one of the first type of printing device 120, second type of printing device 122, cloud resource 118 and/or a different printing device associated with the computing device 102. As described herein, the print job thread for the print job can be generated and the print job thread can be updated based on the selected printing device. For example, the device configuration of the print job thread, the rendering configuration of the print job thread, and/or the delivery configuration of the print job thread can be dynamically altered based on the selected printing device.

[0017] In some examples, the computing device 102 can include instructions 114 that can be executed by a processor resource 104 to alter a print data language and a destination port of the print job thread in response to the selected printing device. As described herein, the print job thread that is generated utilizing one of a plurality of print pool ports of the computing device 102. In some examples, the computing device 102 can include a plurality of print pool ports that allows the computing device 102 to generate a plurality of corresponding print job threads in parallel. Prior to releasing the print job thread to a selected printing device, the computing device 102 can alter the print data language within the print job thread and/or the destination port of the print job thread.

[0018] In one example, the selected printing device can be the first type of printing device 120. In this example, the first type of printing device 120 can utilize PCL6 print data language. In this example, the print job thread that has been generated can alter the print data language to the PCL6 print data language. In this way, the print job thread can be dynamically changed upon the selection of the first type of printing device 120 when the first type of printing device 120 is selected. In this example, the destination port of the print job thread can be altered to a physical destination port of the first type of printing device 120. In this example, the print pool port utilized to generate the print job thread can be allocated to the physical destination port of the first type of printing device 120 upon selection of the first type of printing device 120.

[0019] In some examples, the computing device 102 can include instructions that can be executed by a processor resource 104 to generate, in parallel with the print job thread, a plurality of additional print job threads utilizing an additional plurality of print pool ports. As described further herein, print job threads can be generated in parallel utilizing a plurality of print pool ports. In some examples, the quantity of print pool ports can correspond to a quantity of print job threads that can be generated in parallel by the computing device 102. [0020] As described herein, previous examples may utilize print pool ports for a pool of printing devices when the pool of printing devices are the same type of printing device. In these previous examples, each of the print pool ports can have a corresponding destination port to be utilized. The present disclosure can associate a print pool port to a plurality of different printing devices dynamically to allow each of the print pool ports to generate print job threads for a plurality of different printing devices in parallel and at scale. In addition, upon completion of the print job by the printing device, the print pool port can be disassociated or deallocated from the destination port of the selected printing device to allow the print pool port to be allocated to a different destination port or printing device.

[0021] Figure 2 illustrates an example of a memory resource 206 storing instructions for utilizing print pool ports. In some examples, the memory resource 206 can be a part of a computing device or controller that can be communicatively coupled to a computing system that includes a plurality of printing devices. For example, the memory resource 206 can be part of a computing device 102 as referenced in Figure 1 and communicatively coupled to a plurality of printing devices as referenced in Figure 1 . In some examples, the memory resource 206 can be communicatively coupled to a processor resource 204 that can execute instructions 232, 234, 236, 238 stored on the memory resource 206. For example, the memory resource 206 can be communicatively coupled to the processor resource 204 through a communication path 205. In some examples, a communication path 205 can include a wired or wireless connection that can allow communication between devices.

[0022] The memory resource 206 may be electronic, magnetic, optical, or other physical storage device that stores executable instructions. Thus, non- transitory machine readable medium (e.g., a memory resource 206) may be, for example, a non-transitory MRM comprising Random-Access Memory (RAM), an Electrically-Erasable Programmable ROM (EEPROM), a storage drive, an optical disc, and the like. The non-transitory machine readable medium (e.g., a memory resource 206) may be disposed within a controller and/or computing device. In this example, the executable instructions 232, 234, 236, 238 can be “installed” on the device. Additionally, and/or alternatively, the non-transitory machine readable medium (e.g., a memory resource) can be a portable, external or remote storage medium, for example, that allows a computing system to download the instructions 232, 234, 236, 238 from the portable/external/remote storage medium. In this situation, the executable instructions may be part of an “installation package”. As described herein, the non-transitory machine readable medium (e.g., a memory resource 206) can be encoded with executable instructions for altering light sources to alter a luminosity at a subject.

[0023] The instructions 232, when executed by a processing resource such as the processing resource 204, can include instructions to generate a plurality of print job threads utilizing a corresponding plurality of print pool ports in parallel, wherein the plurality of print job threads are generated by different applications and utilize corresponding print properties. As described herein, print pool ports can be utilized to generate print job threads that can be released to particular printing devices. Each of the plurality of print pool ports can be utilized to generate corresponding print job threads in parallel. As used herein, generating or releasing print job threads in parallel refers to generating or releasing simultaneously or substantially simultaneously. In this way, the processing resource 204 can execute instructions to generate a plurality of print job threads in parallel utilizing different applications with different print properties.

[0024] As used herein, applications can include a set of instructions that can be utilized to perform particular functions. Different applications can utilize different image formats and/or communication protocols to perform the particular functions. For example, a first application can be a word processing application that can generate a first type of document with a first set of print properties and a second application can include an image processing application that can generate a second type of document with a second set of print properties that are different than the first set of print properties. As described herein, the print pool ports can be utilized to generate print job threads from different applications in parallel.

[0025] In some examples, the print job threads can be generated utilizing one of a list of available print pool ports since the plurality of print pool ports do not have a permanently allocated destination port or printing device. In this way, the print job threads can be generated by any of the print pool ports that are available or not currently being utilized to generate a different print job thread. In this way, a plurality of print job threads can be generated in parallel without having to wait for a particular print pool port to become available. In some examples, the quantity of print pool ports can provide for the same quantity of print job threads to be generated in parallel. For example, a device utilizing four print pool ports can provide for four print job threads to be generated in parallel. Although four print pool ports are used as an example, devices can utilize more or fewer print pool ports in a similar manner.

[0026] The instructions 234, when executed by a processing resource such as the processing resource 204, can include instructions to generate a list of printing devices for the plurality of print job threads based on the corresponding print properties. As described herein, the processing resource 204 can execute instructions to determine the print properties of the plurality of print job threads. Based on the print properties of the plurality of print job threads, the processing resource 204 can execute instructions to determine functions of printing devices that are capable of providing the print properties of the plurality of print job threads. In these examples, the processing resource 204 can execute instructions to generate a list of printing devices that are capable of performing each of the plurality of print job threads, which can be selected.

[0027] The instructions 236, when executed by a processing resource such as the processing resource 204, can include instructions to determine a corresponding selected printing device for the plurality of print job threads. As described herein, a particular printing device can be selected from a list of printing devices that are capable of generating the print job threads. Upon selection, the processing resource 204 can determine the selected printing device for each of the plurality of print job threads in parallel. As described herein, since the print job threads are utilizing print pool ports, the printing devices for the print job threads can be selected and released to corresponding printing devices in parallel without having to wait for a particular port to become available.

[0028] In some examples, the same printing device can be selected for multiple print job threads. In these examples, the multiple print job threads may be released in parallel but may be executed by the same printing device sequentially. In some examples, the printing device can execute the multiple print job threads based on when they were received at the printing device. For example, a first print job thread can be generated by a first print pool port and a second print job thread can be generated by a second print pool port. As described herein, the first print job thread can be generated in parallel with the second print job thread. In this example, the first print job thread can have a particular printing device selected to execute the first print job thread and the second print job thread can also have the same particular printing device selected to execute the second printjob thread. In this example, the first print job thread and the second print job thread can be released in parallel. However, the first print job thread can be received at the particular printing device at a first time and the second print job thread can be received at the same particular printing device at a second time. In this example, the particular printing device can execute the first print job thread and the second print job thread sequentially or serialized since the particular printing device may not be able to execute print job threads in parallel.

[0029] The instructions 238, when executed by a processing resource such as the processing resource 204, can include instructions to alter a print data language, a layout, and a destination port for the plurality of print job threads based on the corresponding selected printing device in parallel. As described herein, the print job threads can include print job data to be utilized by a printing device to generate a print document. In some examples, print job thread can be updated or altered upon a selection of a printing device. As described herein, different types of printing devices can provide different functions, utilize different print data languages, utilize different layouts or processes to generate the print documents, and/or utilize different destination ports or communication connections. For this reason, the print job thread can be altered to reflect a corresponding print data language, layout, and/or destination port to allow the print job thread to be delivered and utilized by a selected printing device.

[0030] Figure 3 illustrates an example of a system 300 including a computing device 302 for utilizing print pool ports 354-1 , 354-2, 354-3. In some examples, the system 300 can include the same or similar elements as system 100 as referenced in Figure 1. For example, the system 300 can include a computing device 302 that can generate print job threads in parallel utilizing the print pool ports 354-1 , 354-2, 354-3 that can be released to different printing devices such as a cloud resource 318, a first type of printing device 320, and/or a second type of printing device 322. [0031] As described herein, each of the plurality of print pool ports 354-1 , 354- 2, 354-3 can be utilized to generate print job threads in parallel and release the print job threads to any of the plurality of printing devices. That is, the print pool ports 354- 1 , 354-2, 354-3 can be allocated to one of the plurality of different types of printing devices for a first print job thread and then allocated to a different printing device type for a second print job thread. In this way, the print pool ports 354-1 , 354-2, 354- 3 can be utilized to provide print job threads to a plurality of different printing device types in parallel to provide scale. For example, print pool port 354-1 can generate a printing thread with either: a first communication channel 316-1 to a cloud resource 318, a second communication channel 316-2 to a first type of printing device 320 (e.g., physical printer, virtual printer, etc.), and/or a third communication channel 316-3 to a second type of printing device 322 (e.g., physical printer, virtual printer, etc.).

[0032] As described herein, the computing device 302 can be utilized to control functions of the plurality of printing devices and/or other peripheral devices. The computing device 302 can include a plurality of components such as a processor, an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a metal-programmable cell array (MPCA), or other combination of circuitry and/or logic to orchestrate execution of instructions 342, 344, 346, 348, 350, 352. In other examples, the computing device 302 can include instructions 342, 344, 346, 348, 350, 352 stored on a machine-readable medium (e.g., memory resource 306, non-transitory computer-readable medium, etc.) and executable by a processor resource 304. In a specific example, the computing device 302 utilizes a non-transitory computer-readable medium storing instructions 342, 344, 346, 348, 350, 352 that, when executed, cause the processor resource 304 to perform corresponding functions.

[0033] In some examples, the computing device 302 can include instructions 342 that can be executed by a processor resource 304 to generate a first print job thread utilizing a first print pool port of the plurality of print ports 354-1 , 354-2, 354-3. As described herein, the first print job thread can include data relating to a first print job that is generated by the computing device 302. In some examples, the first print job thread can be generated by a first application of the computing device 302. As described herein, the first print pool port can be any one of the plurality of print ports 354-1 , 354-2, 354-3 since each of the plurality of print ports 354-1 , 354-2, 354-3 can release or push a print job thread to each of the plurality of printing devices including a cloud resource 318, a first type of printing device 320, and/or a second type of printing device 322 as illustrated in Figure 3.

[0034] In some examples, the computing device 302 can include instructions 344 that can be executed by a processor resource 304 to generate, in parallel with the first print job thread, a second print job thread utilizing a second print pool port of the plurality of print pool ports 354-1 , 354-2, 354-3. As described herein, the second print job thread can be a print job thread generated by a second application that is different than the first application. In some examples, the second print job thread can be generated in parallel with the first print job thread, or generated simultaneously with the first print job thread when the second print job thread is generated by a second print pool port that is different than the first print pool port.

[0035] In some examples, the computing device 302 can include instructions 346 that can be executed by a processor resource 304 to determine the first printing device (e.g., first type of printing device 320, etc.) to be a first selected printing device for the first print job thread and the second printing device (e.g., second type of printing device 322, etc.) to be a second selected printing device for the second print job thread. That is, the first printing device can be a first type of printing device 320 that can be selected to execute the first print job thread and the second printing device can be a second type of printing device 322 that can be selected to execute the second print job thread. In some examples, the first type of printing device 320 can include functions that can be utilized to execute the print job associated with the first print job thread and the second type of printing device 322 can include functions that can be utilized to execute the print job associated with the second print job thread.

[0036] In some examples, the first printing device or first type of printing device 320 can be listed or selectable when the first printing device is capable of executing the print job associated with the first print job thread. In a similar way, the second printing device or second type of printing device 322 can be listed or selectable when the second printing device is capable of executing the print job associated with the second print job thread. In this way, a print job thread can be generated utilizing a particular print pool port and a list of printing devices can be provided that are capable of performing or executing the print job thread to be selectable.

[0037] In some examples, the computing device 302 can include instructions 348 that can be executed by a processor resource 304 to alter the first print job thread to utilize the first print data language and alter the second print job thread to utilize the second print data language. As described herein, the first printing device can utilize a first print data language and the second printing device can utilize a second print data language that is different than the first print data language. Thus, when the first printing device is selected to execute the first print job thread, the first print job thread can be altered to utilize the first print data language and/or a print data language utilized by the first printing device. In a similar way, the second printing device can utilize the second print data language and the second print job thread can be altered to utilize the second print data language when the second printing device is selected.

[0038] In some examples, the computing device 302 can include instructions 350 that can be executed by a processor resource 304 to alter the first print job thread to utilize the first destination port and alter the second print job thread to utilize the second destination port. As described herein, the plurality of print pool ports 354-1 , 354-2, 354-3 may not have a fixed destination port. That is, the plurality of print pool ports 354-1 , 354-2, 354-3 can dynamically update a destination port that is utilized based on a selected printing device for a generated print job thread. As used herein, a destination port can include a destination address or port associated with a particular printing device. For example, the cloud resource 318 can include a first destination port, the first type of printing device 320 can utilize a second destination port, and the second type of printing device 322 can utilize a third destination port. In this way, the computing device 302 or other type of device can send print jobs or print job threads to a specific printing device.

[0039] As described herein, the plurality of print pool ports 354-1 , 354-2, 354-3 may not have a permanent destination port or be associated with a particular printing device. In this way, the print job thread generated by the plurality of print pool ports 354-1 , 354-2, 354-3 can be altered to include a particular destination port associated with a selected printing device. That is, the first print job thread generated by a first print pool port can be altered to a first destination port of a first type of printing device 320 and the second print job thread generated by a second print pool port can be altered to a second destination port of a second type of printing device 322. In some examples, the first print pool and/or the second print pool port can be utilized to generate print job threads that can be altered to different destination ports than the first destination port and/or the second destination port. In this way, a first available print pool port of the plurality of print pool ports 354-1 , 354-2, 354-3 can be utilized to generate a print job thread as described herein.

[0040] In some examples, the computing device 302 can include instructions 352 that can be executed by a processor resource 304 to release the first print job thread to the first printing device and release the second printjob thread to the second printing device. As used herein, releasing a print job to a printing device can include sending the print job thread to a printing device through a communication channel such as communication channels 316-1 , 316-2, 316-3. In some examples, the print job threads can be released by allowing a printing device to pull the print job thread from a queue of print job threads or the print job threads can be pushed to the printing device and enter a queue on the printing device.

[0041] In some examples, the computing device 302 can include instructions to generate a third print job thread utilizing a third print pool port of the plurality of print pool ports 354-1 , 354-2, 354-3 and release the third print job thread to the first type of printing device 320 when the first type of printing device 320 is a selected printing device for the third print job thread. In these examples, the first type of printing device 320 may receive the first print job thread before the third print job thread. In these examples, the first type of printing device 320 may execute the first print job thread and the third print job thread sequentially based on priority or when they were received by the first type of printing device 320.

[0042] In some examples, the computing 302 can include instructions to dissociate the first print pool port from the first printing device upon completion of the first print job thread. For example, the first print pool port can be print pool port 354- 1. In this example, the print pool port 354-1 can be associated with the first type of printing device 320 to provide the first print job thread to the first type of printing device 320 through communication channel 316-2. In this example, the computing device 302 can dissociate the print pool port 354-1 from the first type of printing device 320 such that the print pool port 354-1 can be associated with a different printing device for a new or different print job thread.

[0043] Figure 4 illustrates an example of a flow diagram 460 for utilizing print pool ports. In some examples, the flow diagram 460 can be executed by a system that includes a computing device and/or a plurality of printing devices. For example, the flow diagram 460 can be executed by a system 100 as referenced in Figure 1 and/or a system 300 as referenced in Figure 3.

[0044] The flow diagram 460 illustrates four input spool files or four input print requests 462. As described herein, the input print requests 462 can be generated by different applications running on a computing device. The input print requests 462 can be requests to perform a print job of a particular image or document while utilizing a particular application. In some examples, each of the input print requests 462 can include defined parameters for a corresponding print job.

[0045] In some examples, the input print requests 462 can be utilized to generate corresponding print job threads 464-1 , 464-2, 464-3, 464-4. As described herein, the print job threads 464-1 , 464-2, 464-3, 464-4 can each be generated by corresponding print pool ports. As described herein, the print job threads 464-1 , 464- 2, 464-3, 464-4 can be generated in parallel. For example, the computing device can include four print pool ports that can each generate a corresponding print job thread. Although four print pool ports are illustrated in Figure 4, a greater number of print pool ports can be utilized to generate a greater number of print job threads in parallel.

[0046] In some examples, each of the plurality of print job threads 464-1 , 464- 2, 464-3, 464-4 can include adaptive device configuration 466, dynamic rendering 468, and/or adaptive delivery 470. In some examples, the adaptive device configuration 466 can be utilized to dynamically alter properties of the print job and/or print job thread. For example, the adaptive device configuration 466 can be utilized to alter a layout of the print job based on a selected printing device. In some examples, the adaptive device configuration 466 may also be able to determine delivery details for a printing device. For example, the adaptive device configuration 466 may be able to determine a destination port or destination address of the selected printing device.

[0047] In some examples, the dynamic rendering 468 can be utilized to alter a print data language of the print job threads 464-1 , 464-2, 464-3, 464-4 based on the selected printing device. As described herein, different printing devices can utilize different print job languages. In this way, the print job threads 464-1 , 464-2, 464-3, 464-4 can be altered to utilize a correct print job language for the selected printing device. In one example, the dynamic rendering 468 can alter the print job thread 464-1 for a first printing device 474 (e.g., inkjet printing device), alter the print job thread 464-2 for a second printing device 476 (e.g., laser jet printing device), alter the print job thread 464-3 for a third printing device 478 (e.g., large format printing device), and alter the print job thread 464-4 for a cloud service 472. In some examples, the print job thread 464-4 can be provided to the cloud service 472 for a period of time and later be provided to one of the first printing device 474, second printing device 476, or third printing device 478. In these examples, the dynamic rendering 468 can alter the print job language to a newly selected printing device as described herein.

[0048] In the foregoing detailed description of the disclosure, reference is made to the accompanying drawings that form a part hereof, and in which is shown by way of illustration how examples of the disclosure may be practiced. These examples are described in sufficient detail to enable those of ordinary skill in the art to practice the examples of this disclosure, and it is to be understood that other examples may be utilized and that process, electrical, and/or structural changes may be made without departing from the scope of the disclosure. Further, as used herein, “a” refers to one such thing or more than one such thing.

[0049] The figures herein follow a numbering convention in which the first digit corresponds to the drawing figure number and the remaining digits identify an element or component in the drawing. For example, reference numeral 102 may refer to element 102 in Figure 1 and an analogous element may be identified by reference numeral 302 in Figure 3. Elements shown in the various figures herein can be added, exchanged, and/or eliminated to provide additional examples of the disclosure. In addition, the proportion and the relative scale of the elements provided in the figures are intended to illustrate the examples of the disclosure, and should not be taken in a limiting sense.

[0050] It can be understood that when an element is referred to as being "on," "connected to", “coupled to”, or "coupled with" another element, it can be directly on, connected, or coupled with the other element or intervening elements may be present. In contrast, when an object is “directly coupled to" or “directly coupled with” another element it is understood that are no intervening elements (adhesives, screws, other elements) etc.

[0051] The above specification, examples, and data provide a description of the system and method of the disclosure. Since many examples can be made without departing from the spirit and scope of the system and method of the disclosure, this specification merely sets forth some of the many possible example configurations and implementations.