New Feature:
- Text Comparison Option
- Properties: textCompare, textCompareReportDifferenceImageOverlay, textComparePageByPage, textCompareDebug, reportTextCompareOverlayPdfLayers
- This will check for text differences on a page by page or full document basis. Two diffs are created. One is from 'base' to 'new' and the other is from 'new' to 'base'. Deleted text in either the 'base' or 'new' document is then marked. It is recommended to use the 'Overlay difference image over compared files' report option to make the changes more visible. When text compare is used, 'overlayRelativeChanges' is considered true so that the document difference images don't show the deletions from the other document.
- Enabled with '-text' command line option with ahrts-pdf2pdf and ahrts-compare scripts
- Limitations: pdf font information must have the necessary data available to do text extraction
Enhancements:
- Make difference image file names shorter to avoid maximum file name length
- 'width' and 'height' added to <comparison> in xml report. These are the rendered sizes for base and new documents so it will vary with DPI settings.
- Engine manifest support for 'font-config'
- Ability to specify additional command line arguments in test manifest using <arg> element. Ex: <arg name="-pjq">90</arg>
- Engine configuration support for hyphenation directory, default css, character conversion path, and broken image enviornment variables
- Option to include error listing in single final report.
- Property: includeErrorListingInSingleFinalReport
- Single final report option includes pdf document information using alternate report stylesheet
- reportDifferenceImageOverlay default changed to true
- Render backends immediately issue a warning if rendering fails
- Render backends will log the process standard output and error if rendering fails
- Render backends will add standard output and error messages to report if rendering fails
- Compare info output: total time, total documents, total difference pages, total pages compared
- Visual comparison of PDFs with different page counts marks the new pages as different and displays just the new page in the difference report. The missing page in the other document and the difference image are omitted.
- Property: markMissingPagesAsDifferent
- Option to ignore isolated pixel changes
- Properties: lonePixelRadius, lonePixelDensity
- These options are enabled if both are set to a value greater than zero. 'lonePixelRadius' controls the pixel distance to check for other changes. If 'lonePixelDensity' number of changes doesn't occur within the radius it is considered an isolated change and ignored.
- pdfbox errors recorded to debug.log
- GUI automatically scales up (in addition to guiScale settings) if it doesn't fill threshold percentage of screen height. Properties: appAutoScale and appAutoScaleThreshold.
- ahfts.pdfdraw.dpiUnlocked description changed to 'Allow extremely high dpi values for rendered pdfs' so it's not confused as a GUI setting
- Color threshold comparison option
- Property name: colorThreshold
- This allows the red, green, and blue pixel values to be within this range and still be considered the same.
- Option to preserve document aspect ratio in the comparison report
- Property name: preserveDocumentAspectRatioInReports
- 'true' will preserve the aspect ratio. 'false' will fit the documents into the available area (previous behavior). Note, the 'true' setting uses the values of reportPageWidth and reportPageHeight. These settings will need to specify their values using the same unit (ex: 'in', 'cm', 'pt', etc..).
- Option to include pdf information (author, title, etc...) in individual report
- Property: reportPdfDocumentInformation
- Option to select on or off state for pdf layer
- Properties: reportPdfLayerDifferenceOn, reportPdfLayerHighlightOn, reportPdfLayerDocumentOn, and reportPdfLayerBitmapOn
- Option to exclude difference image in report
- Properties: reportUseDiffImage and reportTextCompareUseDiffImage (RT#17331)
- Option to allow visual comparisons of documents with different dimensions
- Property: allowVisualComparisonWithDifferentDimensions
- If the dimensions are different, it will scale the new document to the base document's size before comparing.
- Hot key to run comparison in GUI
- Property: compareHotKey
- This is a java.awt.event.KeyEvent.VK_* key code value. The default is 116 (F5 key). A value of 0 or less disables the feature.
- Update installer's AHRTS homepage url
- Update pdfbox renderer: pdfbox not rendering annotations (RT#21094)
- renderBackendEnableAhrtsPdfBox property to enable using older internal version of pdfbox
- Update to mupdf 1.16.0
- Update to xpdf 4.01.01
- Property pdfDraw changed to mupdfMutool
- Property xpdfPdftoppm changed to xpdfPdftopng
- Option to use a Formatter config file for reports
- Property: reportFormatterConfig
- Update AH Formatter to 6.6mr4 to fix infinite loop embedding PDF files. (RT# 19208 and 22121)
- Linux, Mac OS X, and Solaris X86 versions also include a copy of AH Formatter
Fixes:
- Alternate Java library wasn't reporting system error messages
- Couldn't compare files with '%' in their file names
- Distributed compare client and server didn't load language translations
- Distributed compare client and server didn't check Java version
- Distributed compare server didn't check if test directory was empty
- Alternate Java library incorrectly identified Mac OS X AH Formatter V6.4 and later as 32-bit
- Missing bookmarks with alternate stylesheet using single final report
- Rendered images weren't being saved to separate directories, this allows deleteTmpFiles=false to save all the images not just the last comparison
- <path name="..."> in test manifest only matched "input-file" for "name". Other values like "stylesheet" and "config-file" were ignored.
- Couldn't set environment variables from test manifest or engine config
- img2img command line client placed comma in the wrong place with the '-T' (image supported) option
- Engine config files had wrong environment variable name for Formatter font configuration file
- If an input file from a test set wasn't at the top of the test directory the comparison would incorrectly report that the input file was missing
- generateReportForNoDifferences incorrectly triggered page size mismatch error if page counts were different
- Missing input file in test compare incorrectly listed as rendering error in report
- Missing test input file with unicode characters could throw uncaught exception
- Old Apache commons logging jar file was being included
- pdfbox jar was including copies of commons logging and bouncy castle libraries
- 'Legion of the Bouncy Castle Java Cryptography APIs' missing from Open Source resources list
- Apache Commons Imaging' missing from Open Source resources list
- 'Apache Commons IO' missing from Open Source resources list
- 'Akka' missing from Open Source resources list
- 'SLF4J' missing from Open Source resources list
- 'ICU4J' missing from Open Source resources list
- Individual pdf2pdf, individual img2img, and test set compare would report 'No visual differences were found in the compared directories'. All comparison types now report 'No visual differences were found in the compared documents'.
- GUI would lock up if test compare pdf report couldn't be created
- reportDifferenceImageOverlay missing from manual
- PDF report merge error could lead to undeleted temporary file
- PDF render failures for both documents only reported as either 'base' or 'new' failed to render
- Missing language entries for 'identical-contents', 'missing-base-pdf', and 'missing-new-pdf'
- GUI update for base rendering count wouldn't update correctly after the first set of pdfs was compared
- diffPagesMax property wasn't being checked correctly
- diffPixelsMax property wasn't being check correctly
- Use of diffPagesMax or diffPixelsMax could lead to undeleted files in temporary directory
- Cancelled comparison or exception loading rendered image could result in undeleted temporary files
- Cancelled rendering would leave undeleted temporary files
- Alternate report didn't list errors in difference page listing
- Image checksum test could result in valid changes being skipped
- Check boxes didn't use GUI scaling
- Invalid engine file could prevent program from running
- pdfbox renderer IllegalArgumentException with small page dimensions
- pdfbox renderer used CropBox instead of MediaBox
- Installer didn't recognize Solaris 11.4 correctly
- Last installer panel sometimes missing text and/or graphics
- Installer didn't delete vcredist_x86.exe
- Unix version wouldn't run if the installation directory name had spaces
- Installer wouldn't remove older files if installation directory name had spaces
- Installer saveInstallConfig option didn't work in Windows
- Embedded copy of AH Formatter could use license file from a separately installed copy of AH Formatter
- Missing translation for number range (ex: 1 to 120)
- Missing translation for margin (top, bottom, left, and right) labels
- Dev bug fix: Text compare using PDF CropBox instead of MediaBox
- Dev bug fix: Page scaling was only calculated for the first page with text compare
Other:
- When the program is first run, open to 'PDF 2 PDF Compare' tab instead of 'Test Samples'
- Separate installers (Windows, Linux64, Macosx64, Solaris-x86)
- Remove '-c <path to mupdf mutool>' option from pdf2pdf command line
- Remove developer scaladoc option from installer
- Remove temporary render image directory as soon as possible to avoid leaving too many temporary files if application exits abnormally