Print spoolfiles via pdf streaming

This operative system’s function is not so popular but you can save some money printing AFPDS spool files to non-IPDS printers: all you need is a printer who can print pdf in streaming (pdf direct).

Here are the steps:

  • spooled by a program is generated
  • it is released to a virtual printer
  • the latter converts it to pdf on the fly using the QSYSPRT system prtf
  • at the same time, the qsysprt spool in the format of “USERASCII” is turned to a second print queue
  • it turns it over to the physical printer

Here are the steps you need to take to implement the configuration

First, you need to create the printing device that points to the physical printer

CRTDEVPRT DEVD (PRTFISICA)             
 DEVCLS(-LAN)    
 TYPE(3812)    
 MODEL(1)    
 LANATTACH(-IP)                   
 PORT(9100) //to be inserted based on physical printer mark/model            
 FONT(11 -NONE)                       
 FORMFEED('AUTOCUT')                   
 INACTTMR(-SEC15)                     
 MFRTYPMDL(-HP4) //to be inserted based on physical printer brand/model           
 PPRSRC1(-A4)                         
 PPRSRC2(-A4)                         
 RMTLOCNAME('192.168.10.1') //printer ip address           
 SYSDRVPGM(-HPPJLDRV) //to be inserted based on physical printer brand/model           
 TEXT('HP Logistics Office Printer') 

After that, it switches to generating an object of type “PSFCFG” that will take care of the transformation from spool to pdf

CRTPSFCFG PSFCFG(QGPL/PRTPDF)                 
 USRRSCLIBL(JOBLIBL)                     
 RLSTMR(SEC15)                          
 PRTRSPTMR(NOMAX)                        
 PDFGEN(SPLF)                           
 PDFDEVTYPE(IP40300)                     
 PDFPPRDWR1(A4)                         
 PDFPPRDWR2(A4)                          
 PDFSENDER(SPLFOWN)                     
 PDFOUTQ(QUSRSYS/PRTFISICA)             
 TEXT('PSFCFG for PRTFISICA') 

And finally, you create the device that will trigger the transformation using the object “PSFCFG” and send the print out to the physical printer

CRTDEVPRT DEVD (PRTPDF)                                 
 PORT(12501) //choose a free port on your "i" with NETSTAT OPTION(-CNN) command                                      
 FONT(011 "NONE")                                  
 FORMFEED('AUTOCUT')                              
 RMTLOCNAME('127.0.0.1')                          
 USRDFNOBJ(QGPL/PRTPDF )PSFCFG)               
 TEXT('Virtual printer pdf') 

At this point, you just have to release the spool to the PRTPDF printer and verify that the spool is printed correctly on paper.

NB: Be careful that if the QSYSPRT has the HOLD parameter set to “YES” the release on the second output queue must be done manually: the system will wait for the user to release it to send the stream to the physical printer.

Related Posts
DB2 for i SQL – String Manipulation – POSSTR-LOCATE-LOCATE_IN_STRING (EN)

Introduction Often, in our applications, we need to work with text strings, and DB2 SQL can come in very useful Read more

DB2 for i – FAQ & Howtos (EN)

DB2 Database and SQL ... maybe the most important things on IBM i platform: here's a collection of FAQs, tips Read more

IBM i 7.4 Announcement (En)

Comes directly with the Easter egg this IBM announcement for the news of the IBM i 7.4 version, iNext version Read more

Generated Always Columns (EN)

Introduction "Generated Always Column": are columns, table fields, filled by DB2 engine: something like columns with a default value but Read more

Recent Posts

ACS Access Client Solution 1.1.9.5

Early April saw the release of the "Spring Version" of ACS Access Client Solution, version 1.1.9.5 Interesting new features especially…

2 days ago

Tim Rowe and Scott Forstie for CEC 2024 – Milan

If the packed agenda of sessions at Common Europe Congress 2024, June 3-6 Milan, wasn't enough for you, here's another…

2 days ago

Code for IBM i 2.10.0 – Debug IBM i App with Visual Studio Code

Debugging functions with Visual Studio Code have been available for some time but this new version 2.10.0 simplifies the handling…

5 days ago

ObjectConnect over TCP/IP

Two and a half years after my post Transferring objects with ObjectConnect and Enterprise Extender, I finally got around to…

5 days ago

SQL: SELECT with “superpowers”

With a little trick even a simple SELECT statement can execute any system command! Let's see how to do that...

6 months ago

NetServer for everyone – part 5

A mini-serial guide to configuring, managing, using, and troubleshooting the IBM i NetServer

1 year ago