ELP has a build in function to convert Asian Double Byte and Unicode based data streams from SAP into a single byte data stream, which than is printable on any PCL5 printer, without any extra printer hardware requirements.
The fantastic benefits of that are shortly described here or available as a printable Fact sheet and below here:
If SAP is already running in the western world, then you do not need to change or adapt any already created ABAP list or SAPscript form.
All your used fonts are still supported.
If you have a special corporate identity font feel free to continue to use it.
You can use as many font styles as you like, bold, italic etc. There is no limitation.
ELP supports all 3 methods of printing:
- One byte like East and western European characters like German and Cyrillic or Greek.
- Double Bytes printing like simplified or traditional Chinese
- Full Unicode printing
UNIX, Linux and other host operating systems are supported (here).
You can keep using the SAP DeviceType printing method
The data stream can be archived in its real printed form, including the visibility of barcodes and all characters.
|IMPORTANT to know: The standard ELP installation does not come with the fonts. You can download the font package installer from
our website for additional software downloads.
A few steps are needed.
MS Windows operating systems
For a brand new installation follow steps 2 to 6 of the next chapter.
For an existing installation follow steps 3 and 4 and then add the key SAP_Unicode=ON into the section/rule GLOBAL in your command.ini file:
Configuration Tab - Mark rule Global - Add key to rule - Open Miscellaneous keys - double click on the SAP_Unicode key - OK - Close - Test - select the printer and SAP_Unicode Test file - Print - Yes.
UNIX, Linux and similar operating systems
In order to reduce the download size just retrieve ELP from here.
So here is what you need to do:
Install and test the Unix ELP system, as described here: Installation Linux / Unix / AIX / Solaris etc.
Download and install as well the windows version of ELP. As the fonts are installed using windows tools.
Download and install the provided zip file under MS Windows (you must read the license terms!)
Start the ELP Control Center and in the startup agent go down, activate a queue and then configure further down the windows ELP for Unicode & Double Byte printing.
Testing under MS Windows: Configuration Tab - Test - select the printer and the SAP_Unicode test file - Print - Yes.
FTP in binary mode the complete unicode (in lowercase!!!) windows directory path to your system. Right into the installation directory.
Also ftp all *.def files from c:\ProgramData\WELP over to the directory where you placed the unicode sub directory. (defined in the -D command line path below)
Note: ELP will automatically convert them to bin files on the first usage. So make sure the directory is writable for all users!
Also copy over the convert.ini or if you already have a special configuration, add like described further down the document the key SAP_Unicode=ON into the section/rule GLOBAL in your command.ini file.
You need to call ELP including the command line parameters
- Make always sure, that the used *.uni files are in lowercase and the name of the conversion database is always written in exact this case: Unicode2Font.db
When using full Unicode printing, then maybe import also the provided SAP DeviceType.Benefit: does support all western fonts (Courier, Helvetica, Universe and Times Roman) plus simplified Chinese characters (in Unicode).
Now you are ready for testing. However, the Unicode fonts and characters are NOT provided, even not in the windows environment. But it is really easy to incorporate the fonts into the ELP system.
The key UnicodeErrorChar defines a character, which is printed during the Unicode conversion, if the requested unicode character is not defined in the ELP database.
The character can be provided in hex notation, e.g. \x24
Be sure to use a printable character in all requested symbol sets.
Another way to print is using TrueType fonts in SAP is the Cascading Font solution. The big disadvantage is the really huge data streams as SAP sends down all the time the complete font. So Arial Narrow for example is 170 KBytes and for a Unicode font up to 20 MByte! And this in every job.
If the form uses regular and bold, usually the file size is even doubled.
ELP helps you to reduce the print file size using the keys: ConvertSoftFont2ISO and RemoveDownLoadFont.
Beside ELP and described configuration steps in this online-manual, you need the SAP DeviceTypes for Asian Double Byte or Unicode printing, unless you decide not to generate a complete own one..
- The splitting of spool files directly into an archive or for further processing in another queue is not support at the same time using the SAP Unicode conversion. The solution is first to split into a queue and using a second run of each splitted document together with the SAP Unicode replacement.
- The automatic extending of an SAP DeviceTypes with new fonts.
How does the ELP convert Unicode / Double Bytes?
ELP is analyzing the SAP data stream coming from a DeviceType. In there ELP will notice if Unicode or non Latin 1 Byte and Asian Double Bytes data streams are used.
ELP does also note in which type face the characters are. Or in other words, which font names and in which styles (regular/normal, bold, italic etc.) are used.
Then ELP converts in the below described way the Double Bytes / Unicode implementation into single code, so the data stream can be printed on any PCL5 enabled printer, Laser-, Ink- or GEL technology.
The ELP's PCL5 and text parser does evaluate the active used typeface, its style and the used mode.
Being not in non Latin 1 Byte and Asian Double Byte or Unicode mode, ELP performs as usual.
But being in Double Byte mode (For technical people: Symbol set Big 5 and activation sequence: Esc*t38P) or in Unicode mode: (Activation Esc *t83P) then ELP will convert each character from its coding into its integer value.
In Double Byte mode the value is then translated into its Unicode character number.
For non Latin 1 Byte characters, not build in the printer, ELP will also use the same method for selection the proper Unicode character, which then is downloaded once per job in its single byte representation.
After that ELP tries to open the file unicode\TypefaceNumber\Unicode2Font_10.db. The typeface numbers provided in the default installation are:
4148 Univers (PCL Helvetica font)
4101 CG Times (PCL Times font)
Further typefaces can be added any time.
If the typeface directory does not exist, ELP will switch back to the courier font definition.
In the Unicode2Font.db database can be up to 64000 Unicode characters defined. Each character can have one out of 3 definition states:
If the character is not defined, translation character zero, then a # sign is printed.
The character can be translated into a printer build in character, then the symbol set is defined and the charter number in this font.
The character is converted and printed in the needed symbol set.
If the character is available as a download sign, then the defined symbol set number must be larger or equal to 8000. How to get those fonts, see next chapter.
Then the character description is inserted into the data stream and printed.
Each character is only loaded once per job.
If the specific style is not available (Italic / bold / bold-italic) ELP will try to download the regular style.
After that ELP all possible defined ELP rules are performed. However, if Search or Trigger commands are used to activate them, the search argument must be defined in Unicode or non Latin 1 Byte and Asian Double Byte mode.
Every character below 128, meaning 1 to 9, A to Z, a to Z, point, comma, blank etc. are in both symbol sets available. Character above 128 needs to be searched using in its Unicode / Double Byte binary implementation.
ELP does not come with any additional font, your printer is NOT supporting. You have to add those fonts by yourself.
This is to avoid any conflicts with font copyrights.
Difference between SAP Double Byte and real Unicode printing
Real Unicode printing means, that all characters of the world are defined in one font, most likely called Andale or in Windows Arial Unicode.
The Double Byte way of printing means, that there are specific fonts for specific languages.
ELP currently supports the conversion from Big 5 (Traditional Chinese) Code to Unicode and then to single byte printing.
Big 5 is the character encoding standard most commonly used for traditional Chinese characters. Countries such as Taiwan, Hong Kong and Malaysia are using this encoding standard.
Every Chinese Character is represented by a two byte code. The first byte ranges from 0xA1 to 0xF9, while the second byte ranges from 0x40 to 0x7E, 0xA1 to 0xFE.
Note that the MSB of the two byte code is always set. Thus, in a document that contain Chinese characters and regular ASCII characters, the ASCII characters are still represented with a single byte.
Introduction in adding new (non Latin) fonts
The following steps need to be performed
1. You need to have a Unicode encoded TrueType font. (For testing you may use the Arialuni.ttf or for Chinese look for SimSun.ttf Unicode in the internet.)
A good place to look is right here: http://www.alanwood.net/unicode/fonts.html
If you have already a printer equipped with an font Dimm for Unicode / Double Byte printing, then you may print the PCL font list, in order to find out the names of the implemented fonts, and then you can search out the WEB for them.
Most Asian fonts are fixed pitch fonts, so all characters have the same spacing like the typeface Courier does. But for more western oriented fonts, like Greek or Cyrillic, you need to find a font in your wished style.
Maybe there was one installed within MS Windows during the printer driver installation.
Convert the font into the PCL5 download format using the stethos TTF2PCLETTO.exe command line tool.
Use the SAP_Unicode tool to create a new typeface definition or add the converted fonts to an existing typeface definition.
Test your conversion in the tool
Test your SAP data stream
Step 1: Convert your True Type font into PCL
Generate a working directory where you can convert the fonts using e.g. the explorer. In the example below we used C:\ProgramData\WELP\unicode\17004 .
See later in this online-manual what the number 17004 is about.
After you have downloaded a Unicode true type fonts for the internet or your have them already in your windows fonts directory please store the font in that directory in our example we use arialuni.ttf, which was available in the windows\fonts directory.
NOTE: stethos is not liable for the font copyright. You have to respect the copyright from the font manufacture!
Start the provided tool TTF2PCLETTO from Start - Enhanced Laser Printing ELP - SAP Unicode & Double Byte - TTF2PCLETTO
Select as the input file name the directory where you have stored your true type font.
Enter the path to the output folder which is usually the exact same folder.
|Font Number||Any number above 8000. This number is used for the file name generation and must be above 8000, as otherwise the font will never be loaded.
You may use several fonts for one download set. E.g. If you have a courier Cyrillic font and a Courier Arabic font, you may combine them with this functionality to one download set.
As the result files are generated with the naming: FontNumber_#.sfs
For the first time conversion of any font the following fields should remain at the default value or empty! Press the convert button to finish this setup.
|Char Table||Can be later used in order to add more characters to the setting, e.g. if you like to design your own unicode font set. For Double Byte it is normally not needed at all.
A side effect is, that only the characters from the true type font are converted which are not yet defined in the Unicode2font_xx.db. However those characters then are directly inserted into the database, so the you should always use a copy of the database and not the original. The original is later filled in the next step. The xx stands for 10. Normal, 13: Bold, 110 Italic and 113 Bold Italic
If you start a complete new font setting, with a non printer based typeface number then please leave that one empty and skip as well first and Last char fields
However, if you want to add the font to an existing type face definition, select the proper typeface database file. The file can be found in the Unicode\TypefaceID directory and is named Unicode2Font_$$$.db. The value of $$$ is described below. For new fonts, the font can be based upon some printer internal fonts. The files can then be generated using the tool, described in Step 2.
|First Char||If set larger then 1 the tool will not convert any true type Unicode character below that number. For example if you only want to convert the Cyrillic specific characters enter 1040|
|Last Char||If set below 65565 the tool will not convert any true type Unicode character upbove that number. For example if you only want to convert the Cyrillic specific characters enter 1273|
|Font Name||Any name you prefer. We may suggest the typeface name of SAP so here in our example maybe 17004|
Font weight, must match the actual font´s stroke weight. Default values:
-7 = Ultra Thin
|Pitch:||Definition for the width of the space character. If needed later during testing and if the space char width does not fit, it can be adjusted here.
The value is in design units of the true type font. If you have no true type editor, then it is a try and error game.
|Symbolset:||For Unicode you can enter 10N for Double Byte and once you know it, it is recommended to use the real Symbol Set, like 10T etc.
Bold, italic: Greyed, then the converter will take those values out of the true type font itself. Otherwise the syntax of the generate font files is like this:
#### Is the selected font number > 8000
$$$ is the style of the font.
Only for experts!
Press Convert button to generate the PCL download files.
Step 2: Convert the PCL font files into the ELP internal format
In order to fast access and download each character of any font, ELP does use an own font file format.
This format is generated with the provided SAP_Unicode tool, which is also used for any further described steps.
Start the SAP_Unicode tool via the windows START menu - Programs - Enhanced Laser Printing ELP - SAP Unicode & Double Byte - SAP_Unicode tool.
The tool is used to edit the Unicode2Font.db database files and to import new fonts or character definitions.
The full tool functionality is explained later, for this step simply click on the "Font conversion" button.
In the first step select the "Browse" button and in the file load dialog box select any file in the fonts directory, in our example in directory C:\ProgramData\WELP\unicode\17004
and there maybe 9000_0.sfs. Click ok and the path is displayed in the conversion directory field.
The simply click on "Do it"
After a short while the tool will display how many files had been converted form *.sfs to *.uni.
If you which you can now delete all *.sfs files. They are not needed anymore.
Step 3: Add the new characters to the Unicode2font.db file
ELP will first check the database if a specific character is available. In the first place you need to create a database in the directory or to store the default database in the font directory.
If you want to add the characters to the existing typefaces (Courier 4099, CG Times 4101 or Univers 4148) then load the database file from one of those provided types: e.g. c:\ProgramData\WELP\unicode\4099\Unicde2Font.db using the "Actual file" button. This is used in most cases for western oriented languages like Cyrillic, Polish, and Greek etc.
If your font reflects a complete new not implemented typeface and even does contain all characters from ASCII 32 to 127 and all Unicode characters above then skip this first step. Most likely used for the complete full Unicode printing.
If your Unicode True type font does only contain characters in a special language, then you can also add those to an existing database file. In this case load that file, using the "Actual file" button.
Skip this first step as well, when the database file should be not based upon a printer internal font.
Click on the button "Create new" Unicoed2Font_xx.db database.
Select "Browse" and set the new font directory, e.g. C:\ProgramData\WELP\unicode\17004
The default filename Unicode2Font.db is then displayed in the name edit field.
Choose the operation mode, which are described in the first step.
Select the style of fonst you are generating: it it is a regular non italic font, please don't select any check box. The value then will be 10.
Click on "Create".
Now the file Unicode.map, which was also created in the first step is loaded, is analysed, and all characters are inserted in the database, but only if the character is not yet defined. So the function does only add characters and not overwrite!
Step 4: Placing the new fonts in the ELP environment
This is the tricky part of the story. And it depends upon the method of printing and upon the SAP DeviceType you are using.
It is wise before continuing to create a backup of the complete c:\ProgramData\WELP\unicode directory structure.
Method for Double Byte printing:
As Double Byte printing within SAP is a mixture of standard 1 Byte and Double Byte and unfortunately different printer vendors use different font definitions for Double Byte printing, you have to know the used typeface number.
There are 2 principle methods for that. If you have for test purposes already a printer equipped with a working font hardware extension, then you may in the first step print the PCL typeface list of that printer. On the list are displayed all available fonts and their typeface numbers, which is usually the last number of the fonts escape sequence right in front of the T-Parameter.
If you have several fonts, then check if they are only in different styles (Bold etc) or if they are really different looking types.
In any case, you need to know now, which of the fonts your DeviceType or SAP application is using. Therefore print a job into file or for MS Windows users set the queue to hold and open the print file with notepad, which is usually located at c:\windows\system32\spool\printers.
Then search the file for the two characters (s. Normally you find them pretty often. The definition is for Courier normal 10 cpi is like that: Esc(s0p10h0s0b4099T. You see the typeface number 4099. For Univers it looks like that: \x1B(s1p11v0s0b4148T (type face number 4148) and finally CG Times 4101. We do not look for those numbers.
Normally the Asian fonts type faces are listed in the 30000 type face number range.
Here we will try to collect a list of numbers listed by printer manufacturer names:
Vendor Double Byte type face number Symbolset
HP 28752 Japanisch 19K
HP 33261 Trad. Chinese with serife 18T
HP 33269 Trad. Chinese without serife 18T
HP 37058 Simpl. Chinese SimSun 18C
HP 37110 Simpl. Chinese SimHei 18C
HP 37357 Simpl. Chinese SimKai 18C
HP 37366 Simpl. Chinese SimFang 18C
HP 43088 Koreanisch 19H
Also when you look at the full font sequence, there are 2 numbers which are usually within that font selection sequence and before the s and b characters, which are sually:
#s 0 is upright, 1 italic
#b 0 is normal, 3 bold.
So if you use not only normal upright fonts, you may convert the other styles as well, and copy them all into the same type face number directory. The difference of those styles reflects like described above the file name extension, _$$$.
Once you have the type face number SAP uses, open the file explorer and generate a the additional directory at c:\ProgramData\WELP\unicode e.g. 33269 when using a Lexmark SAP Double Byte DeviceType driver.
Finally move all files from d:\tt2pcl into that directory.
For those familiar with DOS use those commands:
move d:\tt2\pcl\*.* C:\ProgramData\WELP\unicode\33269
For UNIX based system, FTP now the d:\tt2pcl directory up to your UNIX platform into the same unicode directory.
Tip: Barcodes are in the range of 24500 to 24900.
Method for Unicode printing:
It is more or less the same as describe above. The main difference is, that by default SAP uses Andale using the following typeface numbers:
Andale Mono WT J Japan 17004
Andale Mono WT K Korean 17005
Andale Mono WT S simplified Chinesisch 17007
Andale Mono WT T traditional Chinesisch 17006
However you can also use the provided DeviceType and then you may use Courier 4099, Univers 4148 or Times 4101. In that case, the Unicode2Font.db had to be based upon the those provided databases.
So either copy the files form the Arialuni.ttf now into the new C:\ProgramData\WELP\unicode\17004 directory or in the other provided ones.
Step 5: Setup ELP for Unicode printing.
This is pretty easy. Start the ELP Control Center - Select the ini-file register - Mark the Global rule or any other new rule - Click Add key to rule - Open the Miscellaneous section and add the key SAP_Unicode.
Step 6: Testing the new font.
There are two ways of testing the setup. It is recommended to use them both.
The SAP_Unicode tool offers a "Print" button. Before clicking on it, make sure that the correct Unicode2Font.db file is loaded.
Here you can define which Unicode range of the database should be printed.
If you do not want to print the full set as you are looking only for a specific range or set of characters, then you may want to browse to this web page in order to get known about the correct Unicode character range for your requested language: http://www.alanwood.net/unicode/index.html
On the right hand you can select the font and style which relates to the directory and file names, you have in the steps earlier chosen.
After you clicked on "Print" a print file is generated and the tool displays you the stored location.
Copy the file now into the main WELP program directory, but rename it to the file extension *.PCL:
copy /b tt2pcl\CharTable.prn C:\Program Files (x86)\WELP\CharTable.pcl
Finally print the file using again the the ELP Control Center: Install register - select the installed printer you want to test in the right windows (single click) - Then click button "Print demo file on selected printer" - double click on your test file: CharTable.pcl.
Step 7: SAP configuration
Method for Double Byte printing: Simply use the standard SAP DeviceType and you are done.
Method for Unicode printing: Simply use the standard SAP DeviceType when you have added a complete new type face like the example Arialuni.ttf, or you can use the provided SAP DeviceType for at least West and East European printing. Import it into the SPAD form c:\Program Files (x86)\WELP\ZHPLJ4KU.PRI
Step 8: ELP activation of Double-Byte and Unicode printing
Put the key SAP_Unicode=ON into the rule GLOBAL
Note: If the Unicode directory is moved to another volume and this directory is NOT the default working directory, then you need to set the variable #ELP_STARTUPFORMS_PATH# to the new directory. The variable points to the directory above the unicode directory. Example: The new directory is d:\stethos\unicode then use this command set:
The Definition must end with a backslash for MS Windows or slash for Unix based operating systems!
If the Courier font was extended by an Asian character set, you may turn on the UnicodeDoubleAsianCourier key to print the Asian characters in the width of 2 standard European characters.