Troubleshooting - InterFormNG2 Manual

Troubleshooting

This section contains solutions to specific problems:

 

  1. Issues related to namespaces in input XML files
  2. Error during rendering: Message: org.apache.fontbox.ttf.TrueTypeFont.getAdvanceWidth(I)
  3. PKIX path building failed: XXXX: unable to find valid certification path to requested target.
  4. Allocate more memory for InterFormNG2 on Windows
  5. Warning in the job log: PCL Text X position below zero
  6. Why detail lines are not overflowing to a new page
  7. The license information screen in InterFormNG2 is not showing any machine information
  8. Help is also available for setting up a GS1/EAN barcode.
  9. How to solve the error: "Required cardinality of first argument of <function()> is zero or one; supplied value contains <x> items".
  10. Windows platform: InterFormNG2 service stops immediately
  11. Specific problems related to the IBM i platform are listed here.
  12. InterFormNG2 stops processing immediately after a print out was generated
  13. Solution for workflow error: Unsuitable types for + operation (xs:string, xs:integer)
  14. PDF and/or other output files are created slower than previously.

 

 

 

1.Default (unnamed) namespaces in the input XML files can make the XML file invalid, and can block the use of the XML file data in InterFormNG2. You can find identify a defaultd namespace as a node looking like this:

<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2">.

This defines a namespace, but no name is assigned. This may block any use of the XML file.

 

There is however a workaround: You can remove all namespaces including the default workflow component, XML Remove namespaces. You will then need to run this workflow component on any input XML file before you can load it in the Library e.g. for use in the designer. You will also need to use the XML remove namespaces component as the first component in the workflow before you e.g. merge into print or a PDF.

 

A manual workaround is to either remove the specification of the the unnamed namespace like this:

<Invoice>

or to give it a random name like below:

<Invoice xmlns:xxxx="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"

 

 

2.Ignore namespaces in XML references. Another issue related to namespaces is, that you might want to ignore the namespaces in the input XML file, so that XML references will work independently on if the input XML file has namespaces or not. This is covered in the section, Ignore namespaces inside the XPath section of this manual.

 

 

Error during rendering: Message: org.apache.fontbox.ttf.TrueTypeFont.getAdvanceWidth(I)

If you get the error above or the error: tacktrace: org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.getFontWidth(PDTrueTypeFont.java:685) during rendering of e.g. print or PDF output, then you are trying to output a character, that is not included in the font, that you are using for the text.

This can e.g. be caused by the character, non-breakable space (nbsp) with the hexadecimal code, A0.

 

In order to avoid the error message you need to either select another font, that includes the special character or you can replace the special character with another character, that is included in the font. For the non-breakable space the recommendation is to replace the non-breakable space with a normal space character. You can do that in two ways:

1.With the workflow component, Replace non-breaking space.

2.With the procedure described below:

 

You can do a search and replace for specific nodes with these design elements:

 

First define a variable (e.g. nbsp), that contains this special character:

 

NG2NBSP0001

 

And later you can use this variable to substitute (or translate) the non-breakable space with the normal space like so:

translate(/ROOT/DOCUMENT/TEXT_TXT,$nbsp,' ')

 

 

PKIX path building failed: XXXX: unable to find valid certification path to requested target.

Refer to the section, Certificates and especially this subsection, if you get the error message above.

 

 

Allocate more memory for InterFormNG2 on Windows

Running very large jobs or many tenants can require additional memory allocation for the JVM running InterFormNG2

It is possible to add more memory to the Java Virtual Machine on Microsoft Windows, by adding a file to the installation folder called

NG2.exe.vmoptions

 

A complete path example of the file is:

C:\Program Files\InterFormNG2\NG2.exe.vmoptions

 

Inside the file, add the following

-Xmx8g

 

Restart the InterFormNG2 service and now it should run with 8GB of memory (Instead of the default 4GB).

 

For other operating systems, the -xmx8g can be set directly as a JVM parameter in the starting script.

 

 

Warning in the job log: PCL Text X position below zero

When the workflows renders a PCL print out (print for laser printers), then you might see this error message in the job logs:

"PCL Text <x> position below zero"

 

This warning is caused by a template where one or multiple texts elements are placed too much to the left or even to the left of the left edge of the output page. For PCL printing there is an unprintable margin of 6 mm (almost 1/4 of an inch) on the left side. It is not possible to print closer to the left edge than that. (In the PCL commands sent to the printers a position of 6 mm from the left is actually 0 from the left, which means a position that is closer than 6 mm to that left edge actually will get a negative position in the PCL print out commands). A negative position is not possible in PCL, so such texts are moved to the right to ensure that they do not have a negative position.

 

On way to avoid this is to use the default margin of 6 mm whenever you create a template, which is meant for PCL printing. Another is to move your leftmost elements to the right until this warning is gone.

 

Please also notice, that this can be an issue even if the text is not placed on the very left, if the text is either centered or right-aligned and the leftmost part of the text is getting too far to the left.

 

A mentioned above this is a warning to inform you, that the text in the PCL output is not placed where you have specified, but it is moved to the right into the position 0 from the left (inside the 6 mm. margin).

 

 

Windows platform: InterFormNG2 service stops immediately

This section concerns the scenario, where the InterFormNG2 service starts up, but ends immediately on the Windows platform. If you see this, then you should first verify if the InterFormNG2 service is setup to run under a specific Windows user. You can verify tha,t if you in Windows search for 'Services' and open it:

 

NG2Troubleshooting001

 

In the 'Log On As' column you might see Local System, which sets up the service to run as the current user. Alternatively the column might refer to a specific user like in the example above. In order for the service to run under a specific user, the password registered here must match the password of this user. You can add a user for the service and/or edit the password if you right-click on this service and select Properties and then the Log on tab as below:

 

NG2Troubleshooting002

 

- and click Apply and OK, if you have changed either. The changes will take effect after a restart of the InterFormNG2 service.

 

Next you should verify, if there are new entries in the system log of InterFormNG2, which indicates an issue. The system log is as default found in this file:

C:\ProgramData\InterFormNG2\profiles\default\logs\interformng2.log

 

But the path to this file is fully configurable, so you can verify that if necessary if you search in Windows for Environment variables and select the option Edit environment variables.

Then you see this window:

 

NG2Troubleshoot003

 

Now you should select Environment Variables... and here you can see the path as the value of the environment variable, INTERFORMNG2_HOME:

 

NG2Troubleshoot004

 

In the example above the path have been changed into D:\ProgramData2\InterFormNG2.

 

If you find that the system log file is unchanged after a restart of the InterFormNG2 service, then this indicates that the user of the InterFormNG2 service does not have the authority to change this file.

 

To eliminate that option you can view the data folder of InterFormNG2 e.g. C:\ProgramData\InterFormNG2 in File explorer and here ensure that the user has full authority to this folder (and sub-folders).

 

If you are unable to see the C:\ProgramData folder (even though it should exist), then the hidden folders are probably not shown. You can choose to see hidden folders in File explorer if you select this in the top ribbon: ViewShow >, and mark Hidden items (if this option is not already enabled).

 

Now that you can see the program data folder you can how right-click the InterFormNG2 sub-folder, select Properties and then you see this pop-up window, where you should select the Security tab:

 

NG2Troubleshoot005

 

You can now edit authorities if you click Edit.... Then you see this window:

 

NG2Troubleshoot006

 

 

Here you can edit the authorities of the existing users if you first select the user and then change the authorities for the user in the bottom. You can also add a new user if you click Add.., then you see this window:

 

NG2Troubleshoot007

 

In the entry field you can now type in the user and click 'Check names' to verify if the user has been correctly selected. After adding the user you can then add/remove authorities for this user.

 

 

InterFormNG2 stops processing immediately after a print out was generated

This troubleshooting sections address the scenario, where InterFormNG2 generates a print out and immediately after that the processing stops without any error message.

 

Description of the probable reason

The most likely reason for such a scenario is, that one or multiple printers in InterFormNG2 are setup with a direct connection e.g. via direct socket or via LDP.

 

In such a scenario it is very likely, that one or more printers are unresponsive and the connection does not time out. If the connection does not time out InterFormNG2 will continue to contact the printer(s) to deliver the print data stream. There is a limit to the number of printer communication threads and when that limit is reached, then InterFormNG2 will stop processing and wait for one of the printers to reply.

 

Possible solutions

If the scenario is as described above, then the issue can be solved in any of these ways (you only need to implement one of them):

 

1.Activate the print queue manager for the printers that are directly connected.

2.Redefine the printers to use a printer defined in the operating system.

3.Setup a time out value for the printers that are directly connected.

 

 

Activate print queue manager for a printer

One solution is to activate the print queue manager for the printers, that are directly connected. With the print queue manager the print outs are kept and queued while waiting to be printed. With the print queue manager you can even redirect printouts to another printer if there is an issue with a specific printer without loosing any print outs.

 

Create a printer in InterFormNG2, which is defined in the operating system

The procedure to define a printer in InterFormNG2, which is defined in the operating system is covered here.

With this setup it is the operating system, that is handling printers that are unresponsive. You will not be able to see any print issues in InterFormNG2 as the operating system is responsible for delivering the print data stream to the printer.

 

Activate time out on printers by adding a workflow variable

Another way to avoid an endless wait for a printer is to setup a time out. You can do that by adding the variable, printerSocket.timeout in the workflow and for this variable setup the number of seconds (e.g. 20), that InterFormNG2 should wait for a response from a printer. If the printer does not response within this time frame the print out is dropped. This variable is described here.


Create a printer in InterFormNG2, which is defined in the operating system

The procedure to define a printer in InterFormNG2, which is defined in the operating system is covered here.

With this setup it is the operating system, that is handling printers that are unresponsive. You will not be able to see any print issues in InterFormNG2 as the operating system is responsible for delivering the print data stream to the printer.

 

Activate time out on printers by adding a workflow variable

Another way to avoid an endless wait for a printer is to setup a time out. You can do that by adding the variable, printerSocket.timeout in the workflow and for this variable setup the number of seconds (e.g. 20), that InterFormNG2 should wait for a response from a printer. If the printer does not response within this time frame the print out is dropped. This variable is described here.

 

 

PDF and/or other output files are created slower than previously

If you have generated output files for a long time e.g. with the workflow component, Create PDF file or To filesystem, then you might experience that the output files are created much slower than previously. The usual reason is too extended use of the value, Append version for the parameter: Filenaming conflict resolution. If the output files are created in a directory, which already contains thousands of files with the same name, then InterFormNG2 will use a lot of time to go through all of these files until at vacant file name is found. So the suggestion is to ensure that a unique file name is generated in another way or to use multiple output folders. This is covered in this section of the description of the Create PDF file component.


    Notice: Help Center Transition Update

    As of January 13, 2025, we are excited to announce that our new Help Center is in the final stages of development. While the Knowledge Base is already accessible, our current JIRA system will continue to manage support tickets during this transition period. For assistance with InterForm Output Management Software, please refer to the Support for InterForm Output Management Software.

    We appreciate your patience and understanding as we work to enhance your support experience. If you have any questions or encounter any issues, please do not hesitate to reach out via the existing support channels.

    Best regards,
    The InterForm Support Team


      • Related Articles

      • Troubleshooting AS400 specifics

        This section covers issues, that can be met in regards to the IBM i platform (AS400 iSeries). Non IBM i related troubleshooting is found in the section, Troubleshooting. The issues covered are: 1.Problem when loading a spooled file 2.The NG2SERVER ...
      • Spool2XML troubleshooting

        This section covers some of the issues, that you might see when you start to use the Spool2XML module. 1.InterFormNG2 does not react to a ready spooled file. 2.The monitor job stops with the error message: LIC0001 License code issue. 3.The output ...
      • Spool2XML

        One of the InterFormNG2 modules is spool2XML. When it comes to spooled file support in InterFormNG2 you have two options: 1.You can use the spool2XML module to convert input spooled files into XML files, that are placed in the IFS, where InterFormNG2 ...
      • Page overflow

        When you insert many dynamically positioned elements in your output, then InterFormNG2 will automatically force a page overflow. This section covers the page overflow in details: 1.Introduction 2.Flexible header size. 3.Flexible footer size - for a ...
      • EAN-128

        If you want to insert an EAN-128 (GS1-128) barcode in a template, then you need to insert a barcode element. You need to select EAN-128 (GS1-128) as the barcode type, after you have selected the barcode element: The parameters are: (The headers are ...