Posts tagged "central pro"

Central Pro loops during processing

Sometimes you will find that after some edits in your form, or on inclusion of certain data, Central will enter an infinite loop whilst processing pages.

This could have a number of obscure causes, but the most common is this: a combination of incorrect placement of $POSITION field; inappropriate subform size; and Page Full settings configured to conditionally start new pages.

The $POSITION field

When a subform is drawn on the page, the metaphporical drawing head returns to the leftmost part of the printing area, and slightly lower, ready to draw the next subform.

If the subform contains a $POSITION field however, the writing head will start drawing where the position field as, as if that position field were its {0,0} coordinates.

If a $POSITION field is in a JFMAIN page (which serves as the template page for other pages) then it will determine where the start of drawing is located.

The Page Full settings

As subforms are placed on the page, the page fills up, eventually reaching the bottom. Page Full settings can be used to determine when to skip to another page, for example, when there is no more room for a new subform instance, as well as some extra subforms (for example, footers, defined on “At End-Of-Page”).

When the page is full, a new page starts, and the subform that was going to be placed on the previous page is instead placed on the new page. It is important to note that when this is done, the page-full conditions are run again.

The subform size

If a subform is too big for the printing area, it will be truncated at the bottom (print off the bottom of the page) before a new page is started, unless the option “Reserve space for the current subform plus these subforms” option is ticked in the subform’s properties, under Page Full.

If the Reserve Space option is ticked, a new page will be started, and the subform will again be laid down on the page.

Now imagine these scenarios:

a) There is no room on the page for the subform, so a new page is started. The $POSITION field is low enough on the page so that there is still no room for the subform. So a new page is started, where the $POSITION field is again too low.
–> Infinite loop

This often happens when a $POSITION field in a JFMAIN has been moved too low for some reason. Bring the $POSITION field back to the top left corner of the printable area.

b) A large subform whose veritcal size exceeds that of the page is called. A new page is started for the subform, but the page is still too small. So a new page is started, but the page is still too small.
–> Infinite loop

This often happens when either the $POSITION field is set too low, or when the form design was made for the PDF default presentment target (it makes use of the whole page space), but the processing is done for a physical target (for example, a printer), where physical margins reduce the printable area. To correct this, set the default presentment target to be the one with the most restrictive margins (which will show in the design area as dark gray), and only allow items to be as tall as that space (remember to also account for header and footer spaces), and adjust the $POSITION field accordingly.

Many bad pages are printed / data is missing (Central Pro, Output Designer)

When processing a template with data in one environment (in Output Designer for example, or on the development server), the output seems fine; but when the same data and template are tested somewhere else (a different Designer, a different Central server), the reult is that many pages are printed, some blank, some with data in the wrong place, some data lacking.

Solution #1 – the afxon option is not properly specified

This is most likely to be due to a single argument that has been omitted in your processing parameters : “-afxon

From the Print_Ag.pdf documentation file:

To discard data for unknown fields, start Print Agent with the -afxon option.
To place data for an unknown field in the next field on the template, start Print Agent with the
-afxoff option. This is the default.

In Output Designer, these options are set under menu [ Tools : Options : Print options ]. You can add here any number of command line arguments, separated by spaces, that will apply whenever Test Presentment is run.

In Central server, arguments can be placed at two different locations

1) In the Job Management Database

You can access this under [Central install directory]/Server/jfserver.jmd

Note the syntax of the JMD: the list of arguments holds on a single line, enclosed in quote marks. Within this string of characters, double quotes must be escaped by typing two consecutive double quotes.

I posted previously about checking JMD validity – if you have Python 2.x installed, you might want to try out the following: Tamble JMD 0.2a

2) In the data file

You can add arguments in the JOB line of your data file.

If the first line of a data file starts with ^job, the Central engine (if run using Central Control on Windows, or launching the jfdaemon or jfserver on *nix) will take the arguments listed and append them to the ones already extant in the JMD. Since they are applied afterwards, they take precedence.

So if you have an argument -afxoff in your JMD, and you specify -afxon in your JOB line, -afxon will be applied when processing.

Solution #2 – you are using non-SAP compatible templates on a Central activated for SAP data

You may find that the above solution does not seem to apply (but please, test that one first as it is the most likely). In which case, there is a second potential explanation.

Central Pro can be obtained with an SAP adapter which needs to be used with templates specially compiled for this use. To activate this special compilation mode, you need to set the value of the following key to “0”

HKEY_CURRENT_USER\Software\Adobe\Output Designer 5.x\5.x\JfDesign\Compile\

Where ‘x’ should be replaced accordingly to correspond to your version of Output Designer. You can see in your problematic template whether the option is already active by looking at the template’s automatically generated preamble – if there are no !FldNotAvail events on the fields, the option is active.

“Invalid options on ^subform command” error (Adobe Central Pro)

Here’s a puzzler that looks strange, but that is easy to solve – once you understand a key difference between dynamic templates and static templates, and how Central loads and unloads tempplates.

– You have multiple templates that you want to use for processing data
– You can process each template independantly without troubles (data only uses one template)
– When you call different templates (data uses the ^form command), with some combinations of files, you get the following error:
Invalid options on ^subform command

You are mixing dynamic templates with static templates

Ensure all your templates are fully dynamic by ensuring all fields exist inside subforms

Some of your forms are dynamic, some of them are static. Dynamic forms are created when fields are wrapped in subforms.

Dynamic forms, when compiled, create an embedded Preamble (see this in Output Designer with Ctrl+R, when a form is open)
Static forms do not.

The preamble is basically a set of variable definitions that get stored to a special global variable area.
Preamble variables call subform definitions, which are effectively the structural parts of the template.

When a template is loaded, preamble data is executed which reference form structures – for example, if you have a field called myfield in a subform called mysub, you will get:

^comment -----------------------------------------------------------------
^comment Subform: (mysub)
^comment -----------------------------------------------------------------
^define group:myfield!FldNotAvail \groupG_mysub\fieldmyfield.
^define group:myfield!FldUsed \groupG_mysub\fieldmyfield.

When a new template is loaded, any pre-existing form structures are flushed from memory (the item referred to by the “\groupG_mysub\fieldmyfield” part) – but the global preamble variables (the “group:myfield!FldNotAvail” part) are not : they cannot be distinguished easily from regular data, so they are kept.

When you load a static form, no preamble data exists to overwrite previous preamble information – in this case, the definitions for myfield field.

When in your data, myfield is called for the static field, the dynamic definition is still in memory, causing it to try and access a non-existing structure – hence the error.

A short term solution would be to wrap myfield into a subform – this will cause a dynamic preamble to be created for it, overwriting the other template’s definition of myfield

Long term, the recommendation is
-when using multiple templates, avoid where possible having fields of the same name, across all templates
-do not mix static templates with dynamic templates – if such a situation arises, convert the static forms to dynamic, by grouping them in the appropriate subforms. Preferably, leave no field out of a subform

2D Datamatrix barcodes in ZPL printing with Central Pro Output Server

You may find that when producing a 2D Datamatrix barcode for ZPL printers, the barcode is incorrectly produced. This is linked to the fact that Central’s escape character for the FNC1 control character is also part of ZPL’s “special characters” set. It is possible (and necessary) to customize the escape control character for the FNC1 byte. Configuration for 2D Datamatrix barcodes for ZPL is defined in …\Adobe\Output Designer 5.x\Config\barcode2.zpl

At the end of the file, the comments state:

; 2nd white value - escape control character
; Number representing the ASCII value of
; Zebra escape character used in the
; data.  Not currently supported.

Changing the value however will take effect correctly (ignore the fact that it says “unsupported”). To do this:

  1. In the barcode2.zpl file, edit the BarcodeWhite line appropriately of the 2D Datamatrix barcode section at the end of the file, above the comments, and save. For example, to use the dollar sign “$” as an escape character, edit as follows:
    BarcodeWhite 6 36 1 1 1

    Where 36 is the ASCII value for the dollar sign character. It is advised to remain with 7-bit ASCII values

  2. Open your form design in Output Designer
  3. go to menu File > Presentment Targets
  4. Select the presentment target (be sure it is highlighted)
  5. Click on the Font Setup button under the list of targets
  6. Make sure the correct fonts are selected – in this case, Barcode2 should be selected (if afterwards this does not work, try selecting all fonts – this will cause a bigger MDF though) Click OK to cause the changes in the barcode2.zpl file to take effec
  7. Re-compile the form to MDF; use this new MDF with your data.

2D Datamatrix barcodes should now come out fine.

Installing Central on later OS’s

A frequent problem that occurs when installling Adobe Central Output Server is that sometimes a valid serial number is declined at install time. This most frequently happens when installing Central 5.5 on WIndows 2003.

Central 5.5 pre-dates the Windows 2003 operating system, which is not in the installer’s list of accepted OS’s.

To install correctly, you will need to copy the installer to a location on the local drive.

-Inside the installer directory, there is a setup.exe – right-click on this file and select the Compatibility tab

-Select Compatibility Mode for Windows 2000

-Repeat these steps also for the setup.exe in the Software\ directory

This will allow the correct recognition of Windows 20003

You do not need to repeat this for the installed binaries, these will accept the platform without any problems.

Problems running XmlImport from command line in Nix systems

Sometimes you may want to run xmlimport in a Nix system from the command line. If you try this, xmlimport will probably blurt back at you:

~/adobe/central/bin/xmlimport: can’t find resource file!

Even though xmlimport works fine in standard use of Central

The reason is that in your shell, you probably don’t have the proper environment variables set.

See this public document, that seems to be hidden from the web at the time of writing:

It refers you to the XmlImport.pdf documentation for UNIX, which lists the environment variables that need to be set for use of xmlimport

The above error can be corrected by setting the NLSPATH variable to


And hey presto! now you can use xmlimport from the command line and from your scripts :-)

Creating a Soft Font Cartridge in Output Designer 5.x (“certain characters do not print correctly/at all”)

NOTA: this article is not an Adobe publication, and carries no guarantees of accuracy. This article may be subject to change at any time.

The print agent needs to firstly know the page codes necessary for interpreting the bytes representing the characters you want to print. This can sometimes be dependant on the print agent, sometimes it depends on the system.

NOTE: The Print Agent manual 5.6 specifies: The use of Thai, Hebrew, and Arabic with Output Designer and Central is neither certified nor supported by Adobe.

Additionally, some characters from Baltic languages cannot be accessed because the glyphs are not supported by Central. Check that the correct symbol sets are in use, that the appropriate fonts are installed on the machine, and that the locale/encoding scheme is supported by the machine.

If you cannot provide UTF-8 data (the encoding jfmerge expects by default), you need to specify the encoding. For example WinLatin-1 is short-handed to “5”. To do this, use either:

  • -ass processing option, e.g. -ass5
  • ^symbolset dynamic command in the DAT data, e.g. ^symbolset 5

Remember that ^symbolset can be called anywhere in the data, even in the preamble. If you are having issues with data that exists in the preamble, try insterting ^symbolset 108 at the top of the custom preable. If you’re having problems with characters from your data, check whether it contains erroneous ^symbolset comands.

If you are mixing several files with different symbol sets (for example, using the ^file command), use the -autf8on option.

This is generally sufficient for printing in Germanic, Nordic and Latin-based languages. Greek and Cyrillic require special fonts to be loaded, as do certain extended characters, and so a soft font cartridge may be required.

Check your fields

First thing to check is that the field that is to display special characters has been set up correctly. If you tell the field that you will give it Latin-based symbols (W1 encoding, such as “a”, or “ê”), but then pass it something else (such as Greek or Cyrillic text), you won’t get the results expected at all…!

  1. Double-click the text field
  2. Click the Font button in the top right
  3. Ensure you have selected the correct font and symbol set
  4. Click OK, and OK again

So far so good. But you may not have the appropriate font, or your font was perhaps not available in the correct symbol set. That’s when you need to create a Soft Font Cartridge

Creating a soft font cartridge

  1. Open Output Designer 5.x
  2. Go to menu File > Presentment targets…
  3. Select the Presentment target to add fonts to
  4. Click the button Font Setup…
  5. The Font Cartridges tab shows what soft font cartridges are available.
    The highlighted ones are the ones that are effectively available for use.

  6. Select TrueType or Type 1 Fonts tab as appropriate
  7. Check that the font directory selected is correct so as to populate the list of fonts
  8. Check that the appropriate symbol set has been selected (list to the right) – W1 is for standard Latin and derivatives, CYR is for Cyrillic, etc
  9. Check that the appropriate Font Storage is selected (ref Designer Help topics accessible from menu Help > section Permanent soft fonts/Download options)
  10. Select all instances of the font you wish to use.
  11. For example, if adding Verdana, it is likely the required files will be verdana.ttf, verdanab.ttf, verdanai.ttf for regular, bold and italic Verdana, respectively.
    You can also include other fonts in the cartridge to identify sets of fonts.

  12. Give this soft font cartridge a name – it will be displayed in the Font Cartridges tab
  13. Click Create soft font
  14. Go to the Font Cartridge tab and select your new soft font cartridge
  15. Click OK

Important: you will need to add the soft font cartridge to every presentment target you intend to use with your design template.

Incorporate the cartridge in MDF for use with Central Output Server

  1. Go to menu File > Compile…
  2. Select the option “Embed soft fonts in template”
  3. Click OK

Force font data to be sent to the printer

  1. Add the -ajutfno option to your processing options
    • if using Test presentment… then this must be done under Menu Tools > Options… : Test presentment : Print options
    • if using Central this can be done via Control Center, or in the ^job line of the data files
  2. Launch process for printing files.

Enabling UTF-8 on Linux/UNIX/*NIX systems

Some systems don’t support certain encodings out of the box.

Check that the locale is installed on the unit by running:

$>	locale -a

This will list all locales. The locale name is case-sensitive. If the locale is not present, it must be installed by the system administrator.
Once the locale is installed: to make a system-wide change of the LANG variable so that daemons etc may see the change, use:

$>	chlang EN_US.UTF-8

The change takes effect at the next session login (so for system services this generally means that the machine needs reboot)

If that command is not available, manually set the $LANG environment variable to EN_US.UTF-8

Problems with Greek characters Delta and Omega

Greek characters delta and omega sometimes do not appear at all in the page. To work around this issue:

  1. Open jetkeys.ini from <Install path>\Adobe\Output Designer\Config
  2. Go to the section headed by the comment “; MS Code Page 1253 (Greek) to Unicode UCS-2 and vice versa
  3. Under the subsection labelled [Translate 63 to 102], add the following:
  4. 0xC4=0x2206
  5. Under the subsection labelled [Translate 102 to 63], add the following:
  6. 0x2206=0xC4
  7. Save jetkeys.ini and re-process your document.

Adding a new Presentment Target to Output Designer 5.x (“adding a new printer driver in Central”)

NOTA: this article is not an Adobe publication, and carries no guarantees of accuracy. This article may be subject to change at any time.

Sometimes people incorrectly talk about “printer drivers” when referring to Presentment Targets. Presentment targets are customization profiles that the Print Agent uses to tailor the printer language that is written out from the Print Agent (jfmerge.exe). Unless you have specified the use of Generic Windows Drivers, it is the Print Agent that produces the printing language, without involving the Windows driver (installed to Windows, not Central) installed on the local machine.

PostScript and PCL5 are the two currently most wide spread languages in use on printers at the time of writing. Central also supports ZPL (for Zebra printers), IPL (for Intermec printers) and PCL6 (which works best with Hewlett Packard printers). It can also produce flat PDF 1.4 output.

If your printer does not appear in the list of presentment targets, but does accept one of the supported languages, then you should be able to create a new profile for your printer. The fact that there is a certain list of printers provided out of the box is more to say that these printers are tested, and they are expected to render correctly. If you create a custom profile for a different printer, there is no actual guarantee that it will work.

You can create a new presentment target for your printer. Please note that:

  • fax printers are an exception – only the presentment targets provided out-of-the-box are expected to work with faxing capabilities. There is no sure way to add a different target in this case
  • there is no guarantee to support custom Presentment targets. Custom targets are the creator’s responsibility
  • when using multiple presentment targets for a form design, you must design for the most restrictive layout (the one with the largest margins)

How to add a Presentment target to your list in Output Designer / Editing a Presentment Target

To create a custom target, first find a target that works when used with your printer. This will depend on whether the printer is meant to understand PCL5, PCL6, PostScript, ZPL, IPL

We will assume for the purpose of this article that you have a (theoretical) printer from manufacturer “PrintBrand” and of model “100”. Its short name shall be designated as “PB100”

We further assume that using the HP LaserJet 5 Presentment target produces correct output on the PB100.

The short name of the HP LaserJet 5 presentment target is “hplj5”. The short name can be seen in Output Designer can be seen at the end of a presentment target’s name in the list of presentment targets, accessed from menu File > Presentment targets.

To create a new presentment target “PB100” based on a pre-existing “HPLJ5”

  1. Open <Program Files location>\Adobe\Output Designer [version]\Config
  2. Locate the hplj5.ics file
  3. Create a copy of hplj5.ics and rename it to pb100.ics – this file name will determine its ID in Designer, and for the -asp processing option
  4. Open pb100.ics in a text editor (e.g. NotePad)
  5. Edit PrinterName and and PrinterDesc as follows:
    PrinterName PB100 ; this is a comment to say it's a PrintBrand 100
    ; comments start with ";" and end with the line
    PrinterDesc My PrintBrand 100 printer
    • PrinterName identifies the printer short name – this should be kept the same as the file name
    • PrinterDesc provides the description seen in the presentment targets list.
  6. Customize any further items you need
    Most items are self-documented in the ICS files.
    You can customize and add page sizes, line heights, etc.
  7. Save the ICS file
  8. In Output Designer, open menu File > Presentment targets…
  9. Select the PrintBrand 100 printer that you have just defined, by ticking the checkbox on its left.
  10. Click the button Font Setup…
  11. Click “OK” to come directly back to the presentment targets. This will re-compile your ICS file for inclusion in future presentment targets. This will not affect MDF files created previously – thise will have to be recompiled to benefit from your changes
  12. Click “OK” to close the Presentment targets window
  13. Use “Test presentment”, or re-compile your form for the changed ICS to take effect.
  14. If afterwards you wish to modify the ICS, or edit an ICS that already exists, repeat steps 4-13

You may have an issue wherein page elements in the output are displaced/moved/in the wrong location when printing to one output device, but appear correctly on another output device, or PDF.

This is because the PDF target has margins of size 0 – this means that a page element is allowed to be printed to any part of a page, even the edge. Some printers impose hard margins on their pages, and page elements cannot appear there, and this is catered for at design time by checking that the form has been designed with the most restrictive margins in mind.

You can change the margin space that JfMerge will take into account in the Presentment Target file.

To see the margins in the design layout, use menu File > Presentment targets and setting the default presentment target. The result is that in the form design, a darker area around the edges of the page will appear, indicating that the current default target has margins set, and no design element should appear there.