The X9Ware TIFF KIT is proprietary to X9Ware LLC and based solely on our development efforts. The implementation is 100% Java and is not dependent on JNI (Java Native Interface) wrappers used to execute external machine dependent code (most typically written in C or C++).
The X9Ware TIFF KIT provides high level functionality for x9 users who need to read, inspect, repair, and write TIFF image files subject to the Check21 X9-100-181 image exchange standard. Per this very technical standard, images must be bitonal (black-white) and based on the TIFF 6.0 standard utilizing Group 4 FAX compression. The X9.100-181 standard adds additional and complex rules that include: specific mandatory and optional tiff tag type values; little endian byte order; mandatory compression; x-y resolution of either 200 or 240 DPI; encoded pixels in a single strip format; photometric interpretation that defines white as zero; minimized image byte array size; and appropriate physical image dimensions. The TIFF KIT has been developed to address these requirements. It includes powerful TIFF image functionality that is targeted specifically to address X9.100-181.
The X9Ware TIFF KIT includes our proprietary TIFF Writer, which is a streamlined TIFF encoder that can be used to create TIFF images that are 100% compliant with the X9.100-181 standard. Over the years, we have continue to do very detailed research into alternative Java based solutions to create X9.100-181 compliant images. The bottom line is that this is very problematic. There are numerous possible solutions, including ImageIO introduced with Java9+, the original Java Advanced Imaging (JAI), Twelve Monkeys, ImageJ, TIFF Library 4J, Apache Commons Imaging (previously known as Apache Commons Sanselan), Jdeli, and GeoSolutions. All very interesting, but the bottom line is that these libraries are not targeted at the X9.100-181 standard. In addition to that, since the TIFF standard is itself very old, there is not the desire or demand to create improved generalized TIFF software for the Java environment. This recently became very obvious when Oracle added TIFF support to Java9 ImageIO. There were high hopes that this would provide the opportunity for Java to have new and enhanced TIFF support. However, Java9 ImageIO is only a transplant of a subset of the original JAI. Our decision was to reject these alternatives. We decided to develop our own high performance TIFF image tools that are 100% Java and fully X9.100-181 compliant.
The X9Ware TIFF KIT includes our proprietary TIFF Inspector, which is a TIFF image byte array analyzer that allows the TIFF IFD (Image File Directory) of an existing TIFF image to be interrogated for X9.100-181 compliance. By using the TIFF inspector, your Java application can determine which images within your x9.37 processing flow already comply with the X9.100-181 standard, and alternatively which of them have inherent issues. The TIFF KIT allows your application to define the specific tiff tag values that are either mandatory or optional, and thus required during the inspection process. You can let the inspector do this analysis for you, or you can alternatively evaluate the TIFF directory itself for more detailed compliance factors. By using the TIFF Inspector process, your application can identify TIFF images and do not meet X9.100-181 compliance and thus represent potential future administrative returns.
The X9Ware TIFF KIT includes our proprietary TIFF Repair tool, which will take an image in many common formats (TIFF, JPG, PNG, BMP, or GIF) and convert it to an X9.100-181 compliant TIFF image. The repair tool builds on our Inspector and Writer, allowing output images to be manipulated to guarantee X9.100-181 compliance. Image Repair includes a variety of manipulations that can be leveraged to improve your image quality. This can be as simple as correcting the TIFF tags that are already present or adding needed TIFF tags. However, it can also be more complex. Examples of these manipulations include converting to standard 200/240 DPI, transforming images to big endian or single strip, changing the photometric interpretation, or even rescaling (resizing) an image to a standard size while maintaining the current aspect ratio. All of this logic is very specific to X9.100-181. Most importantly, since we are the author of this library, we can further enhance it to meet additional needs that may exist in your environment.
The X9Ware TIFF KIT provides the needed mechanisms, using our proprietary Java APIs, to selectively apply these tools to your images. Images can be inspected to determine if they are already in compliance with the X9.100-181 standard. If so, no action needs to be taken. It is our opinion and a generally accepted industry “best practice” to not manipulate compliant images, since it is good to retain them “as-is” as they first created by the scanner. However, based on inspection, errant (non-conforming) images can be updated to bring them into compliance. Using the TIFF KIT, you can repair and construct a replacement image that then achieves X9.100-181 compliance and thus will be accepted by your downstream exchange partners. We would expect that this manipulation would be needed for a small percentage of your overall items. However, these problematic images could represent a significant number of your administrative returns.