Printer Resident Fonts using SAP Adobe Forms
Hello Fellow SAP Techies!
It has been long since I have been able to write a blog and this one has been on my list for quite some time. Finally I started putting together this post . Hope this helps
Intended Audience –
SAP Developers , SAP Development Architect , SAP Basis
The client had a requirement where the usual check forms going to the Bank for Payments was to be printed from SAP, S4 HANA 2020 FPS2 , on-premise , in this case.
The most important consideration was not to put the company logo(s) , Executive Signature(s) and ofcourse MICR(code at the bottom used on checks to identify the check) were not to be saved with the form design, so that it doesn’t show in the spool pdf – when opened from Sp01/Sp02, but only on the actually printed check . This was a security constraint for the client and they were very strict on this.
Additionally, The printer used for printing the check was Troy’s HP Laserjet P3015, the fonts were residing directly on the printer( hence the title Printer Resident Fonts) and hence the signatures , logos and MICR would get directly printed on the printed check and not when downloading the pdf from spool tcodes – SP01/Sp02
You need to work with Basis team closely on this to get the printer specs, majorly below
- Exact Font names as in Printer e.g. Troy Image 201 Screen Font
- Escape Sequence for the the Fonts
- Get the MICR command used for printing MICR code
The solution involves few steps, majorly basis related . I also want to share some great tools shared by SAP team on this
Step 1 : To be done in the Form Design i.e. Adobe Livecycle Designer for Adobe Forms- Assign the Fonts in the Layout to the required form elements e.g. text field . Note – You don’t need to install the font on your machine , rather just type the Font name , as is in the Printer specs so e.g. in this case as in screenshot below , instead of selecting the font name from the dropdown , type in the font name i.e. Troy Image 205 Screen Font.
This step is done by Developer.
Step 2: Download the standard hppcl5e.xdc file and then update XDC file Note – XDC file is the main file which is used by ADS server to render the actual form at run time
This step is usually done by Basis team.
Step 2.1 : Update the Font escape sequences as provided in printer specs, as mentioned in the pre-requisites above
Step 2.2 : Update the Pre-doc section with MICR command, as mentioned in the pre-requisites above
Lastly we also added a new command as highlighted in the postdoc section below
Note – We noticed blank pages being printed when the xdc file has only the MICR command -12400 and not -12345 but th eprevious steps and this last step helped to resolve the issue
Step 3 : Update the XDC file in report RSPO0022
This step is usually done by Basis team.
Step 3.1: Upload the new xdc file
Step 3.2: Assign the newly uploaded xdc file to your device type associated with your printer
Step 4 : Run test – Make sure when you are running the test print, print on the exact printer(e.g. ZTROYMC a directly so that the right xdc file is picked up by ADS server to generate the pcl file . If you print to a Local printer first and then go to Sp01 and change the printer to print to another printer it wont pick the right xdc file
Additional tips :
- The PCL file is the main file which has all the form translated in the Printer language . So if the pcl file generated is good , you are on the right track
Now the next question would be how to get the pcl file for your print job – You can run report RSPO0020 to get the pcl file for your spool id (from Sp01)
Also if you dont see any field on the printed form – you should check if its in the pcl file or not
2. Additionally , there is another handy report , RSPO_TEST_CREATE_SPOOL , which could be used to directly print the pcl file if you have a working pcl file available from somewhere – to see if the pcl file is good .
Hope you find this helpful!
P.S – Special thanks to @annette.horstmann and @harpreetsingh.saini from SAP support team for their support on this.
Thank you for this wonderful and inspiring blog! I have no opportunity to try it out at the moment, but I have a similar (yet not the same) requirement.
I posted my question, maybe you could have an idea:
Adobe Forms: Restrict font usage in ADS
Thanks again in any case!