Please enable JavaScript to view this site.

InterFormNG2 Manual

Navigation: » No topics above this level «

Troubleshooting

Scroll Prev Top Next More

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

 

 

 

Issues related to namespaces in input XML files

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: View, Show >, 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.